我有一个项目大约10k线,我试图确保一切都被覆盖。如何确保我的测试触及我的代码库的每一行?
我知道有很多更复杂的考虑因素,但作为基准,我想知道是否有办法让pytest
告诉我有多少行,以代码库中行数的百分比表示。例如,如果在if/else控制结构中,测试只覆盖True情况,或者根本不运行某个函数,它可以通知我。
这当然偏向于笨重的单元测试,而不是精确的单元测试,但在这个阶段我仍然会发现它很方便。
我想这是可能的,因为工具如line_profiler
可以提供信息。
我有一个项目大约10k线,我试图确保一切都被覆盖。如何确保我的测试触及我的代码库的每一行?
我知道有很多更复杂的考虑因素,但作为基准,我想知道是否有办法让pytest
告诉我有多少行,以代码库中行数的百分比表示。例如,如果在if/else控制结构中,测试只覆盖True情况,或者根本不运行某个函数,它可以通知我。
这当然偏向于笨重的单元测试,而不是精确的单元测试,但在这个阶段我仍然会发现它很方便。
我想这是可能的,因为工具如line_profiler
可以提供信息。
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%
优秀 我最终使用的特定命令是 'python2 -m coverage运行--source mymod test_mymod.py && python2 -m覆盖报告' – user3557216 2014-09-18 22:18:54
您是否在搜索覆盖率测量工具? – Sebastian 2014-09-18 21:53:25
我做过了,但没有使用“覆盖率”一词。我想这就是所有结果都隐藏起来的地方。 – user3557216 2014-09-18 21:55:52
请记住,coverage是一个有用的指标,但不能*证明*你的代码是好的,只是你已经记下了所有的路径。如果你的测试不正确,你的代码可能仍然是错误的。 – 2014-09-18 22:29:03