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模块进行。