coveragepy(测试覆盖)
常用命令,在测试代码目录下执行
coverage run -m unittest discover
‘跑覆盖率coverage report -m
‘获取结果coverage html
‘覆盖率结果生成html文件
代码忽略覆盖检测
第一种方法
注释法:
function() # pragma: no cover
此行代码将不参与覆盖率检测
第二种方法
修改配置文件 .coveragerc 的omit参数,参考自 https://coverage.readthedocs.io/en/latest/source.html#execution
issue
#1350
Option to excluded no-context lines from total calculation
留意后续
#1384
Show / hide fully covered files in HTML report
这个issue在等待贡献。需要懂前端知识,加一个复选框按钮,显示/隐藏覆盖率100%的文件
TODO
浏览跟html有关的源码
通过单元测试文件( test_html.py
)和debug,可以知道html跟以下文件代码有关
coverage/control.py::Coverage::html_report
html通过模板生成,没有用Jinja2, 而是coverage自己实现了一个Template类,跟Django模板语法类似,是Django模板系统的子集。
回到issue, 如果要贡献代码,修改 htmlfiles/index.html文件
, 在 htmlfiles/coverage_html.js
增加js代码。
至于实现,可以参考pytest_html的代码
带问题读源码
命令行工具coverage对应的源码文件
cmdline.py
。 通过optparse库实现,该库已被弃用并且将不再继续开发;开发将转至argparse模块进行。