Выполнение тестов pytest/ --cov=mypackage показало 29%-ное покрытие модуля, которое должно было быть 100%. И запуск тестов только для этого конкретного модуля показал 100%-ное покрытие.
При запуске:
pytesttests/ --cov=mypackage
- pytest обрабатывает тесты в другом порядке, чем при явном перечислении файлов:
pytesttest/test_auth.pytests/test_other.py --cov=mypackage
Вместо:
pytesttests/ --cov=mypackage
Используйте явный список файлов:
pytesttest/test_target.pytests/test_other.pytests/subdir/ --cov=mypackage
Поместите тесты для наиболее важных целей покрытия ПЕРВЫМИ в списке.
Когда вы указываете файлы явно:
- pytest обрабатывает их в ВАШЕМ порядке
- Целевой модуль импортируется во время собственных тестов (с активным покрытием)
- Он обрабатывается в в своем собственном порядке (часто в алфавитном порядке).
- Некоторые несвязанные тесты могут вызвать импорт вашего модуля.
- Покрытие видит модуль, но с 0 выполненными строками.
- Последующие тесты выполняют код, но покрытие уже «видел» модуль.
coverage run -m pytest tests/test_target.pytests/test_other.py
отчет о покрытии
по сравнению с этим:
coverage run -m pytesttests/
отчет о покрытии
Если первый показывает более высокий охват, вы столкнулись с этой ошибкой.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ctory-vs-e
Мобильная версия