我目前嘗試使用模擬庫在python中編寫一些基本的nose unittests。如何使用nosetests從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]
有什麼辦法可以排除模擬包和通過--cover-package=PACKAGE
得益於斯內德爾德imaplib包,而無需手動白名單,但所有這些軟件包我現在瞭解的.coveragerc文件,感謝您的!
我創建了包含以下內容的.coveragerc文件:
[report]
omit = *mock*
現在我在覆蓋報告模擬輸出:
mock 1240 1240 0% 16-2356
它不包括模擬包中的任何時間較長,但仍然在報告中顯示。
我使用Coverage.py,版本3.5.2,如果這是任何幫助。
嘗試用'--cover-erase'清除以前的數據。 – xbello