我有一个大约10k行的项目,我试图确保所有内容都被覆盖。
我知道有更复杂的考虑因素,但作为基线,我想知道是否有办法让pytest
告诉我有多少行,占代码库中行数的百分比,它访问。
例如,如果在if / else控制结构中,测试只覆盖True情况,或者某些函数从未运行过,它可以通知我。
这肯定是偏向于大型笨重的单元测试,而不是小的精确测试,但在这个阶段我仍然会发现它很方便。
我想这是可能的,因为line_profiler
等工具可以提供信息。
答案 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%