我是一个有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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top