如何确保我的测试触及代码库的每一行?

时间:2014-09-18 21:51:17

标签: python pytest

我有一个大约10k行的项目,我试图确保所有内容都被覆盖。

我知道有更复杂的考虑因素,但作为基线,我想知道是否有办法让pytest告诉我有多少行,占代码库中行数的百分比,它访问。

例如,如果在if / else控制结构中,测试只覆盖True情况,或者某些函数从未运行过,它可以通知我。

这肯定是偏向于大型笨重的单元测试,而不是小的精确测试,但在这个阶段我仍然会发现它很方便。

我想这是可能的,因为line_profiler等工具可以提供信息。

1 个答案:

答案 0 :(得分:4)

Coverage可能是您正在寻找的工具:

  

Coverage.py测量代码覆盖率,通常在测试执行期间。   它使用了代码分析工具和跟踪提供的钩子   Python标准库,用于确定哪些行是可执行的,以及   已被执行。

覆盖率衡量您所覆盖的行,并帮助您识别待处理的行。例如,在coverage documentation中,您可以看到它生成的报告类型:

$ coverage report -m 
Name                      Stmts   Miss  Cover   Missing
-------------------------------------------------------
my_program                   20      4    80%   33-35, 39
my_other_module              56      6    89%   17-23
-------------------------------------------------------
TOTAL                        76     10    87%