В настоящее время я пытаюсь использовать библиотеку mock для написания базовых нот-unittests в python.
После завершения некоторого базового примера я теперь попытался использовать nosetests --with-coverage
, и теперь у меня есть пакет макета, и пакет, который я пытался "макетировать", показан в отчете о покрытии. Есть ли возможность исключить их?
Вот класс, который я хочу проверить:
from imaplib import IMAP4
class ImapProxy:
def __init__(self, host):
self._client = IMAP4(host)
И тест: от фиктивного импортного патча
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]
Есть ли способ исключить пакет mock и пакет imaplib без, чтобы вручную переустановить все, кроме этих пакетов, --cover-package=PACKAGE
Благодаря Ned Batchelder теперь я знаю о файле .coveragerc, спасибо за это!
Я создал файл .coveragerc со следующим содержимым:
[report]
omit = *mock*
Теперь мой вывод для макета в отчете о покрытии:
mock 1240 1240 0% 16-2356
Он не распространяется на пакет mock больше, но все еще показывает его в отчете.
Я использую Coverage.py, версия 3.5.2, если это какая-то помощь.