Подтвердить что ты не робот

Python unit test покрытие

Я только начал писать некоторые модульные тесты для проекта python, который я использую unittest и покрытие. Я только сейчас тестирую небольшую долю, но пытаюсь разработать покрытие кода

Я запускаю свои тесты и получаю покрытие, используя следующие

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

Проблема, с которой я сталкиваюсь, заключается в том, что покрытие говорит, что у меня 44% -ый охват кода и только подсчет файлов, которые:

  • были протестированы в модульных тестах (все файлы, которые не были протестированы, отсутствовали, а не в общем покрытии)
  • находились в библиотеках в виртуальной среде и в кодовых покрытиях реальных тестов тоже. Разумеется, это не должно включать фактические тесты в результаты?

Кроме того, он говорит, что файлы, которые фактически протестированы в этих модульных тестах, имеют только первые несколько проверенных строк (которые в большинстве случаев являются операторами импорта)

Как получить более реалистичное покрытие кода или это как оно должно быть?

4b9b3361

Ответ 1

Добавьте --source=. в строку выполнения покрытия. Он оба ограничит фокус текущему каталогу и будет искать файлы .py, которые не были запущены вообще.

Ответ 2

Если вы используете nose вместо testrunner, плагин для него обеспечивает

  --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]