python - 如何使用nosetests从python覆盖率报告中排除模拟包

标签 python mocking code-coverage nose python-mock

我目前尝试使用mock库在python中编写一些基本的 Nose 单元测试。

完成一些基本示例后,我现在尝试使用 nosetests --with-coverage,现在我有了模拟包,我尝试“模拟”的包显示在覆盖率报告中。有没有可能排除这些?

这是我要测试的类(class):

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

它不再涵盖模拟包,但仍显示在报告中。

如果有帮助,我使用 Coverage.py,版本 3.5.2。

最佳答案

创建一个 .coveragerc 文件,排除报告中不需要的内容:http://nedbatchelder.com/code/coverage/config.html

关于python - 如何使用nosetests从python覆盖率报告中排除模拟包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12187106/

相关文章:

python - 创建后如何更改 tkinter Canvas 的背景颜色?

ios - xctest - 如何测试新 View 是否在按下按钮时加载

c# - 代码覆盖 xml 生成错误

Python __new__ - cls 如何与 __new__ 所在的类不同

python - 在具有 3 个参数的 3D numpy 数组上使用 rot90 时出错

python - 更好的算法来随机播放(或交错)多个不同长度的列表

java - 模拟与实现。如何在单个测试类中共享这两种方法?

java - 指定要模拟的通用接口(interface)的类

ant - 使用 Emma 和 Ant 设置覆盖阈值

java - Sonarqube 未涵盖主要代码