我目前尝试使用模拟库在python中编写一些基本的鼻子单元测试.
在完成了一些基本的例子后,我现在尝试使用nosetests --with-coverage,现在我有了模拟包,我试图'模拟掉'的包显示在覆盖率报告中.是否有可能排除这些?
这是我要测试的类:
from imaplib import IMAP4
class ImapProxy:
def __init__(self, host):
self._client = IMAP4(host)
Run Code Online (Sandbox Code Playgroud)
和测试用例:来自模拟导入补丁
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")
Run Code Online (Sandbox Code Playgroud)
我现在得到以下输出 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]
Run Code Online (Sandbox Code Playgroud)
有没有办法排除模拟包和imaplib包,而不必手动将除了那些包之外的所有包列入白名单--cover-package=PACKAGE
感谢Ned Batchelder,我现在知道.coveragerc文件了,谢谢!
我创建了一个包含以下内容的.coveragerc文件:
[report]
omit = *mock*
Run Code Online (Sandbox Code Playgroud)
现在我在覆盖率报告中的模拟输出是:
mock 1240 1240 0% 16-2356 …Run Code Online (Sandbox Code Playgroud) 为了获得100%的测试覆盖率,我需要忽略python中的一些文件.
我在网上搜索,发现nosetests了我不想使用的内容.
我还发现我可以编辑我的.coveragerc文件并省略文件和函数,当使用intellij(使用unittest框架)运行我的测试时,它没有设法使用.coveragerc文件.
知道在测试覆盖期间如何忽略/省略/排除文件?
如何使用此文件作为参数运行测试?