是否可以从coverage.py报告中排除测试目录?

问题描述:

我是一个用python单元测试的新手,特别是coverage.py。覆盖报告是否包含您的实际测试文件的覆盖率是否可取?是否可以从coverage.py报告中排除测试目录?

以下是我的HTML report的屏幕截图。

您可以看到该报告包含tests/test_credit_card。起初,我试图从报告中省略tests/目录,就像这样:

coverage html --omit=tests/ -d tests/coverage 

我想,命令的一些变化,但我不我的生活得到测试/排除。在接受失败之后,我开始怀疑是否可以将假设的包含在报告中。

谁能一些线索呢?谢谢。

+0

我也有类似的问题。我不希望覆盖报告中有额外的python文件(标准库等)。我结束了剥离他们的XML:http://stackoverflow.com/questions/2293647/how-do-i-generate-coverage-xml-report-for-a-single-package/2377148#2377148 – 2010-03-05 04:48:14

这是一个好主意,看看你的测试覆盖范围,因为它可以指出问题。如果你的测试代码没有运行,那么写入它就没有多大意义了!

我总是得到的是当我给两个单元测试函数相同的名称 - 我在原来的几个月后添加一个新的测试,只是碰巧选择了相同的名称。单元测试框架不会抱怨这个 - 其中一个函数隐藏另一个,它不会运行其中一个测试!详细的报道报告立即显示了问题。

如果测试中有其他代码没有运行,那么也可能指向其他错误,尽管通常会有几行样板代码可能不会被覆盖,具体取决于测试如何被调用,所以不要着迷于达到100%。

如果你有测试代码,真的不再需要,那么它总是很好的删除!

+2

不是真的,在代码覆盖率结果中包含测试并不是一个好主意。这个百分比应该表明你的产品代码的测试范围是什么,而不是间接地表明你有无法访问或死的测试代码。使用不同的方法来查找测试代码中的问题,请勿滥用代码覆盖率指标。 – 2017-06-30 07:18:50

coverage html --omit="*/test*" -d tests/coverage

创建.coveragerc文件在你的项目的根文件夹,并包括以下内容:

[run] 
omit = *tests* 
+0

run omit = * tests * – 2017-07-06 12:11:07

+0

如果你需要修改你的答案,那么你可以按编辑来做到这一点 – WhatsThePoint 2017-07-06 12:40:18

+0

@CynthiaSimiyu,你的答案真的很有帮助,因为我需要省略多个目录。 – lmiguelvargasf 2017-09-13 15:41:49