是否可以从coverage.py报告中排除测试目录?
-
06-07-2019 - |
题
我是一个有python单元测试的新手,尤其是coverage.py。是否需要覆盖报告包括实际测试文件的覆盖范围?
以下是我的 HTML报告的屏幕截图。
您可以看到该报告包含 tests / test_credit_card
。起初我试图从报告中省略 tests /
目录,如下所示:
coverage html --omit=tests/ -d tests/coverage
我尝试了该命令的几个变体,但我可以不在我的生活中得到测试/排除。在接受失败后,我开始怀疑测试文件是否假设包含在报告中。
有人可以对此有所了解吗?
解决方案
编辑:我想我现在同意以下评论,认为这不是一个好消息 将生产代码测试与测试测试混合的想法 码。我无法删除已接受的答案,所以我会保持不变。
** 请低估我的答案! **
查看测试的覆盖范围是一个好主意,因为它可以指出问题。如果你的测试代码没有运行,那么编写它就没有多大意义了!
我总是得到的是当我给两个单元测试函数同名时 - 我在原版之后几个月添加了一个新测试并恰好选择了相同的名称。 unittest框架不会抱怨这个 - 其中一个函数隐藏了另一个,它只是不会运行其中一个测试!详细的报道报告会立即显示问题。
如果您的测试中还有其他代码没有运行,那么这也可能指向其他错误,尽管通常会有几行样板代码可能无法覆盖,具体取决于调用测试的方式,所以不要痴迷于达到100%。
如果你有不再需要的测试代码,那么删除总是好的!
其他提示
coverage html --omit =" * / test *" -d tests / coverage
在项目根文件夹中创建 .coveragerc
文件,并包含以下内容:
[run]
omit = *tests*
您还可以明确指定哪个目录包含您想要覆盖的代码,而不是说要省略哪些内容。在 .coveragerc
文件中,如果感兴趣的目录名为 demo
,则看起来像
[run]
source = demo