Как исключить макет пакета из отчета покрытия python с помощью nosetests
в настоящее время я пытаюсь использовать макет библиотеки, чтобы написать некоторые основные unittests носа в python.
после завершения некоторого основного примера я теперь попытался использовать nosetests --with-coverage
и теперь у меня есть макет пакета, и пакет, который я пытался "издеваться", показан в отчете о покрытии. Есть ли возможность исключить их?
вот класс, который я хочу проверить:
from imaplib import IMAP4
class ImapProxy:
def __init__(self, host):
self._client = IMAP4(host)
и testcase: из макета импорта патча
from ImapProxy import ImapProxy
class TestImap:
def test_connect(self):
with patch('ImapProxy.IMAP4') as imapMock:
proxy = ImapProxy("testhost")
imapMock.assert_called_once_with("testhost")
теперь я получаю следующее вывод для nosetests --with-coverage
.
Name Stmts Miss Cover Missing
------------------------------------------
ImapProxy 4 0 100%
imaplib 675 675 0% 23-1519
mock 1240 810 35% [ a lot of lines]
есть ли способ исключить макет пакета и пакет imaplib без вручную белый список всех, кроме этих пакетов по --cover-package=PACKAGE
благодаря Неду Батчелдеру я теперь знаю об этом .coveragerc файл, спасибо за это!
Я создал .файл coveragerc со следующим содержимым:
[report]
omit = *mock*
теперь мой вывод для макета в отчете о покрытии:
mock 1240 1240 0% 16-2356
это не покройте макет пакета больше, но по-прежнему показывает его в отчете.
я использую Coverage.py, версия 3.5.2, если это какая-либо помощь.
3 ответов
создать .coveragerc файл, который исключает то, что вы не хотите в отчете:http://nedbatchelder.com/code/coverage/config.html
у меня была аналогичная ситуация, тестирующая серию субпакетов в моем основном каталоге пакетов. Я бежал nosetests
из верхнего каталога моего модуля и Mock
и другие библиотеки были включены в отчет о покрытии. Я пробовал использовать --cover-module my_package
в nosetests, но тогда субпакеты не были включены.
запуск следующего решил мою проблему:
nosetests --with-coverage --cover-erase --cover-package ../my_package
и если весь код, который вы хотите проверить в том же каталоге, затем вы можете получить покрытие только для него, указав путь модуля к nosetests
. Это позволяет избежать необходимости белого списка каждого из подмодулей по отдельности.
(в Python 2.7.6, покрытие 4.0.3, нос 1.3.7)