21

Tôi vừa bắt đầu viết một số kiểm tra đơn vị cho dự án python mà tôi đã sử dụng unittest và bảo hiểm. Tôi chỉ hiện đang thử nghiệm một tỷ lệ nhỏ nhưng cố gắng để làm việc ra các mã số bảo hiểmPhạm vi kiểm tra đơn vị Python

tôi chạy thử nghiệm của tôi và nhận được bảo hiểm sử dụng bằng cách sử dụng sau đây

python -m unittest discover -s tests/ 
coverage run -m unittest discover -s tests/ 
coverage report -m 

Vấn đề tôi đang gặp là vùng phủ sóng đó là nói tôi có mã số bảo hiểm 44% và chỉ đếm các tập tin:

  1. đã được thử nghiệm trong các bài kiểm tra đơn vị (tất cả các tập tin mà không được kiểm tra bị thiếu và không có trong phạm vi bảo hiểm tổng thể)
  2. là trong librar trong môi trường ảo và mã vùng phủ sóng của các thử nghiệm thực tế. Chắc chắn nó không nên bao gồm các bài kiểm tra thực tế trong các kết quả?

Hơn nữa nó nói các tập tin mà đang thực sự thử nghiệm trong các bài kiểm tra đơn vị chỉ có vài dòng đầu tiên thử nghiệm (mà là trong hầu hết các trường hợp, các báo cáo nhập khẩu)

Làm thế nào để tôi nhận được một mã số bảo hiểm thực tế hơn hoặc đây có phải là cách nó có nghĩa là phải không?

Trả lời

18

Thêm --source=. vào dòng bảo hiểm chạy. Cả hai sẽ giới hạn trọng tâm vào thư mục hiện tại và sẽ tìm kiếm các tệp .py không chạy được.

+4

Cảm ơn bạn, điều này phù hợp với tôi! 'coverage run --source = {dir} -m unittest discover -s tests /' sẽ bao gồm {dir}. Tôi có thể hỏi mặc dù: Điều gì về đi qua các subdirs (đệ quy)? – sunyata

+0

Tôi thấy rằng có thể sử dụng điều này để bao gồm nhiều thư mục/mô-đun: '--source = {dir1}, {dir2}, {etc}' (xin lưu ý rằng không có dấu cách sau dấu phẩy). Nó vẫn sẽ hữu ích với một tùy chọn đệ quy nếu điều đó có sẵn mặc dù trong trường hợp các mô đun mới được thêm vào mã nguồn – sunyata

+0

Tài liệu: [Sử dụng dòng lệnh Coverage.py] (https://coverage.readthedocs.io/en/latest/ cmd.html) – sunyata

1

Nếu bạn sử dụng nose như một testrunner thay vào đó, các plugin bảo hiểm cho nó cung cấp

--cover-inclusive  Include all python files under working directory in 
         coverage report. Useful for discovering holes in test 
         coverage if not all files are imported by the test 
         suite. [NOSE_COVER_INCLUSIVE] 

    --cover-tests   Include test modules in coverage report 
         [NOSE_COVER_TESTS]