确保单元测试中的代码覆盖率?

rec*_*ner 25 python testing unit-testing code-coverage

我注意到即使我的Python代码中有很多doctests,当我使用这里描述的方法跟踪测试时:

traceit

我发现有些行代码从未执行过.我目前正在筛选traceit日志以识别从未运行的代码块,然后尝试提出不同的测试用例来运行这些特定的块.你可以想象,这是非常耗时的,我想知道我们是否正在以错误的方式解决这个问题以及你们是否有其他建议或建议来处理这个问题,我肯定必须这样做,因为软件变成了足够复杂.

Han*_*Gay 28

coverage.py是一个非常方便的工具.除此之外,它还提供分支机构覆盖.

  • 如果您提供了一个如何使用`coverage.py`的简短示例,这个答案会更有用. (17认同)
  • @SimplyKnownAsG链接页面的前面和中间有一个快速入门部分,包括样本用法.我发现最好只链接,而不是复制粘贴随新版本发布的文档. (6认同)

Bra*_*ker 18

您是否有管理层要求在测试用例中获得100%的代码覆盖率?如果没有,您是否认为触及每行代码是查找代码中错误的最有效方法?假设您没有无限的时间和人力资源,您应该专注于合理地测试所有非平凡的代码,重点放在开发人员知道难以编写或容易出错的部分.

虽然代码覆盖率很高,因为你肯定不能说一段代码在被触摸之前就已经过测试,但我并不等同于触摸一段代码来调用它.我并不反对代码覆盖率,但是很容易将代码覆盖率作为度量来了解测试何时完成.我认为这将是一个错误.

  • 这是一个很好的评论.在我的情况下,我们有科学家,而不是程序员,编写Python代码.因此,即使科学家非常聪明,代码的架构也很差.这意味着最终的整合和测试是一场噩梦,我们必须努力工作才能发现这一阶段的严重问题.我正在尝试让他们为每个负责的代码编写更好的测试用例,并且我计划使用代码覆盖率来验证他们集成的测试.我可以理解,不是100%的代码需要被触及,但它会有所帮助. (7认同)