2014-09-18 53 views
3

我有一个项目大约10k线,我试图确保一切都被覆盖。如何确保我的测试触及我的代码库的每一行?

我知道有很多更复杂的考虑因素,但作为基准,我想知道是否有办法让pytest告诉我有多少行,以代码库中行数的百分比表示。例如,如果在if/else控制结构中,测试只覆盖True情况,或者根本不运行某个函数,它可以通知我。

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

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

+2

您是否在搜索覆盖率测量工具? – Sebastian 2014-09-18 21:53:25

+1

我做过了,但没有使用“覆盖率”一词。我想这就是所有结果都隐藏起来的地方。 – user3557216 2014-09-18 21:55:52

+0

请记住,coverage是一个有用的指标,但不能*证明*你的代码是好的,只是你已经记下了所有的路径。如果你的测试不正确,你的代码可能仍然是错误的。 – 2014-09-18 22:29:03

回答

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% 
+1

优秀 我最终使用的特定命令是 'python2 -m coverage运行--source mymod test_mymod.py && python2 -m覆盖报告' – user3557216 2014-09-18 22:18:54

相关问题