免责声明;初学者问题!代码覆盖率报告“代码运行”,但不是由单独文件单元测试“代码覆盖”
我的项目结构,高度简化的问题的缘故,看起来是这样的:
Project/
|-- main.py
|-- test_main.py
阅读Jeff Knupp's blogpost on unit testing和写作的测试,各种各样我想看看现在多少我的代码是由测试所覆盖后。所以我安装coverage.py和下面让我困惑:
$覆盖运行main.py(显示我的打印/从脚本登录)
$覆盖报告main.py
名称,撑条,小姐,覆盖
main.py,114,28,75%
的事情是,我不从主脚本内运行单元测试,也没有我想我应该。我在提交之前手动运行test_main.py中的所有测试,并知道他们的事实而不是覆盖了我所有语句的75%。在阅读coverage documentation后,我怀疑我的单元测试实现......我是否需要运行测试的main.py中的触发器?
于是,我同我的测试脚本:
$覆盖运行test_main.py(显示我所有测试的 'OK' 试运行)
$覆盖报告test_main.py
名称,撑条,小姐,封面
test_main.py,8,0,100%
但是,这只是向我展示了我在执行脚本期间在测试语句中“击中了”100%的代码。那么为什么如果它只是显示已使用的代码,则覆盖范围列在"increase test coverage"之下。
我真的很想看看我的main.py有多少被test_main.py覆盖,我很确定我缺少一些基本概念。有人能详细说明吗?
在我的Ubuntu机器上运行的“覆盖运行test_main.py;覆盖报告”不仅使我对test_main.py的报告。在我的Windows机器这给:
名称,支杆,小姐,封面
main.py,114,74,35%
test_main。PY,8,0,100%
TOTAL,122,74,39%
覆盖报告仍然没有意义:
- 的test_main涵盖9出的134行代码和主要覆盖范围内的10个函数中的1个不是35%
- 为什么它报告test_main的覆盖率,这些是测试,如果这不是100%,它会很奇怪,因为我' m运行所有测试以查看我的cov erage ...
- 我在这里做错了什么,或者看着它的这种方式是bollocks,计算平均“覆盖率”,而总结与代码本身的测试提供没有见解,在我的初学者意见是错误的
没有看到您的代码很难回答。所有的coverage.py都可以告诉你你运行的是什么代码,以及你可以运行什么代码,并告诉你它们的区别。你已经展示了两份报告,这两份报告都声称是关于main.py的,但第一份报告中有114份报告,第二份报告说有8份报告。这不应该改变。你能仔细检查细节吗? –
@NedBatchelder对不起,小错 - 底部报告与test_main.py相关。我仍然不明白在* test *上下文中覆盖是如何有用的,它在检查哪些代码可能永远不会运行或其他用途上看起来很有用。 我想通过单元测试了解我的代码的哪些部分被*覆盖*(因此覆盖率我认为...),但这只是向我展示了在两个单独的报告中运行的代码。因此,我可以用coverage.py完成我想要的唯一方法是复制test_main.py中的所有main.py代码并在脚本中进行测试? – MarcelTon
您可以使用coverage.py来衡量您的测试套件的执行情况。它会告诉你产品代码中的哪些行是运行的,哪些不是。做到这一点:“覆盖运行test_main.py;覆盖报告”。如果您不想将报告限制为只有一个文件,则不要将报告名称放在报告报告上。 –