Перейти до змісту

Testing coverage

Покриття тестами (Test Coverage)

pip install coverage

Використовуйте coverage run для запуску вашого набору тестів та збору даних. Як би ви зазвичай не запускали свій набір тестів, ви можете запустити ваш test runner під coverage. Якщо ваша команда запуску тестів починається з "python", просто замініть початковий "python" на "coverage run".

Pytest

Якщо ви зазвичай використовуєте:

pytest arg1 arg2 arg3
тоді ви можете запустити тести під coverage так:
coverage run -m pytest arg1 arg2 arg3

Unittest

Замініть "python" на "coverage run", тобто:

python -m unittest discover

coverage run -m unittest discover

Щоб обмежити вимірювання покриття кодом у поточній директорії, а також знайти файли, які взагалі не виконувалися, додайте аргумент --source=. до команди coverage.

Звіт

Використовуйте coverage report для отримання звіту про результати:

coverage report -m
Name                      Stmts   Miss  Cover   Missing
-------------------------------------------------------
my_program.py                20      4    80%   33-35, 39
my_other_module.py           56      6    89%   17-23
-------------------------------------------------------
TOTAL                        76     10    87%

Для більш гарного представлення використовуйте coverage html, щоб отримати анотовані HTML-сторінки з деталізацією пропущених рядків:

coverage html
Потім відкрийте htmlcov/index.html у вашому браузері, щоб побачити звіт на кшталт цього.

Вимірювання покриття зазвичай використовується для оцінки ефективності тестів. Воно може показати, які частини вашого коду обробляються тестами, а які ні.

Ви можете використовувати інструмент coverage.py для вимірювання покриття коду. Він моніторить вашу програму, записуючи, які частини коду були виконані, потім аналізує код, який міг бути виконаний, але не був.

Для запуску вимірювання покриття:

використовуйте команду coverage run для запуску тесту та збору даних. Як би ви зазвичай не запускали тест, ви можете запустити ваш test runner під coverage. Якщо зазвичай команда виконання тесту починається з python, замініть початковий python на coverage runcoverage run -m pytest, потім використовуйте coverage report для звіту про результати:

$ coverage report
Name              Stmts   Miss  Cover   Missing
-----------------------------------------------------------
main.py           7       3     57%        8-10
test_main.py      6       0     100%
-----------------------------------------------------------
TOTAL             13      3     77%

для PyCharm Pro натисніть кнопку Run with Coverage на головній панелі інструментів. Це запустить вибрану конфігурацію запуску/налагодження:

![[coverage_button.png.webp]]