2013-04-17 76 views
6

Tôi cố gắng để thực hiện một cách đầy đủ và sạch sẽ của các gói python thử nghiệm, một trong đó sẽ phù hợp với các yêu cầu folowing:Giải quyết sự nhầm lẫn được tạo ra bởi quá nhiều cách để chạy unittest trong python

  • thực hiện các bài kiểm tra trên máy sạch mà không cần thiết lập chúng (virtualenv)
  • thu thập kết quả từ nhiều nền tảng
  • thu thập kết quả từ nhiều dịch viên python
  • đồng de vùng phủ sóng (kết quả hợp nhất từ ​​nhiều lần thực thi vào một báo cáo)
  • có thể tạo báo cáo vùng phủ sóng xml để hệ thống xây dựng có thể theo dõi thay đổi này theo thời gian như thế nào.
  • có thể kích hoạt tính năng kiểm tra disable dựa trên nền tảng
  • chạy một số lệnh trước khi kiểm tra, như pep8 hoặc autopep8
  • chạy thử nghiệm song song.

tôi đã sử dụng nhiều phương pháp: nose + pytest, tox + pytest nhưng gần đây phát hiện ra rằng pytest sẽ có thể làm hầu hết các công cụ.

Vấn đề chính là tôi không thể tìm thấy một sự so sánh rõ ràng về thời điểm tốt nhất nên sử dụng phương pháp này hoặc cách tiếp cận khác.

Ai đó có thể giải thích điều này và đưa ra một số trường hợp sử dụng hoặc hạn chế của các cấu hình này? ... chỉ để làm cho nó rõ ràng khi bạn đi cho một cách tiếp cận này hay cách khác.

Cuối cùng tôi muốn có các tùy chọn này:

  • quicktest - chạy thử nghiệm tại địa phương, bắt buộc trước mỗi commmit
  • fulltest - kiểm tra đầy đủ, chạy chúng trên tất cả các nền tảng có sẵn, bắt buộc trước khi đưa ra một thông cáo mới
+1

Nếu pytest đáp ứng mọi nhu cầu của bạn, tại sao bạn sẽ cân nhắc sử dụng một cấu hình khác? Chắc chắn điều đó sẽ đơn giản nhất. – pfctdayelise

Trả lời

1

py.test bao gồm tất cả nhu cầu của bạn một cách hoàn hảo nó ưu so với vận động viên kiểm tra khác như mũi:

  • đồ đạc với dependency injection - loại bỏ sự cần thiết của oop phức tạp đối với thiết lập thử nghiệm
  • đơn giản nhưng mạnh mẽ hệ thống plugin với rất nhiều plugin hữu ích - plugin như pytest-xdist cho phép bạn kiểm tra trên tất cả các nền tảng như bạn cần, bao gồm windows, pytest-cov thực hiện vùng phủ sóng, pytest-cache giúp chỉ chạy các thử nghiệm không thành công cuối cùng, v.v.
  • parametrization cho phép bạn sử dụng phương pháp viết-chạy một lần cho các phép thử sử dụng tham số khai báo
  • sử dụng câu lệnh xác nhận đơn giản so với cú pháp giống java phức tạp .assertEquals (http://pytest.org/latest/assert.html)
  • nhiều hơn và nhiều hơn nữa