Можно ли исключить тестовые каталоги из отчетов cover.py? - PullRequest
36 голосов
/ 27 октября 2009

Я вроде новичка с юнит-тестированием на python, и в частности cover.py. Желательно ли, чтобы отчеты о покрытии включали покрытие ваших реальных тестовых файлов?

Вот скриншот моего отчета HTML в качестве примера.

Вы видите, что отчет включает tests/test_credit_card. Сначала я пытался опустить каталог tests/ в отчетах, например:

coverage html --omit=tests/ -d tests/coverage

Я пробовал несколько вариантов этой команды, но я не мог , а за всю жизнь получить тесты / исключить. Приняв поражение, я начал задаваться вопросом, могут ли тестовые файлы предполагаться для включения в отчет.

Может кто-нибудь пролить свет на это?

Ответы [ 4 ]

37 голосов
/ 23 декабря 2013

coverage html --omit="*/test*" -d tests/coverage

21 голосов
/ 06 июля 2017

Создайте .coveragerc файл в корневой папке вашего проекта и включите в него следующее:

[run]
omit = *tests*
8 голосов
/ 27 октября 2009

Редактировать: Я думаю, что теперь я согласен с комментарием ниже о том, что это не хорошо Идея смешать тест вашего производственного кода с тестом вашего тестирования код. Я не могу удалить принятый ответ, поэтому оставлю его без изменений.

** Пожалуйста, уменьшите мой ответ! **


Это хорошая идея, чтобы увидеть охват ваших тестов, поскольку он может указывать на проблемы. Если ваш тестовый код не запущен, то писать его было бессмысленно!

Единственное, что я всегда получаю, это когда я даю двум функциям модульного теста одно и то же имя - я добавляю новый тест через несколько месяцев после оригинала и просто выбираю одно и то же имя. Фреймворк unittest не будет жаловаться на это - одна из функций скрывает другую, и он просто не будет запускать один из тестов! Подробный отчет о покрытии сразу показывает проблему.

Если у вас есть другой код в ваших тестах, который не запускается, то это также может указывать на другие ошибки, хотя обычно есть несколько строк стандартного кода, которые могут не покрываться в зависимости от того, как тесты запускаются, так что не зацикливайтесь на достижении 100%.

И если у вас есть тестовый код, который больше не нужен, его всегда хорошо удалить!

1 голос
/ 02 марта 2019

Вы также можете явно указать, в каком каталоге находится код, который вы хотите охватить, вместо того, чтобы указывать, какие вещи пропустить. В файле .coveragerc, если интересующий каталог называется demo, это выглядит как

[run]
source = demo
...