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

25 投票
2 回答
18208 浏览
提问于 2025-04-16 01:45

我注意到,尽管我们的Python代码里有很多文档测试,但当我用这里描述的方法来跟踪测试时:

traceit

我发现有些代码行根本没有被执行过。我现在需要仔细查看traceit的日志,找出那些从来没有运行过的代码块,然后尝试想出不同的测试案例来测试这些特定的代码块。你可以想象,这个过程非常耗时。我在想我们是不是走错了方向,是否有其他的建议或方法来解决这个问题,因为我相信随着软件变得越来越复杂,这种情况一定很常见。

2 个回答

19

你有没有管理层的要求,必须坚持让你的测试用例覆盖到100%的代码?如果没有,你觉得每一行代码都去测试,是找到代码错误的最佳方法吗?假设你没有无限的时间和人力资源,那你可能应该专注于合理地测试那些比较复杂的代码,特别是那些开发者知道容易出错的部分。

虽然代码覆盖率很重要,因为你不能说一段代码经过测试,直到它被执行过,但我并不认为仅仅执行过一段代码就能算是测试完成。我并不是反对代码覆盖率,但太容易把它当作判断测试是否完成的标准。我认为这样做是个错误。

30

coverage.py 是一个非常实用的工具。除了其他功能,它还提供了分支覆盖率的功能。

撰写回答