Python 覆盖率 Python coverage
覆盖率是度量测试完整性的一个手段,是测试有效性的一个度量。通过已执行代码表示,用于可靠性、稳定性以及性能的评测。
Coverage.py 是一个用来统计 Python 代码覆盖率的工具。通过它可以检测测试代码对被测代码的覆盖率。
安装
参考 https://coverage.readthedocs.io/en/latest/install.html
1 | pip install coverage |
准备 Python 代码
如对于以下 Python 代码 test_simple_class.py
,第 20 行和第 30 行代码在运行时并没有覆盖到。把注释了的代码去掉注释后覆盖率即可达到 100%。
1 | """Test for SimpleClass. |
运行
命令行方式
统计行代码覆盖率:运行以下命令即可得到测试脚本 test_simple_class.py
的覆盖率文件 .coverage
。
1 | coverage run test_simple_class.py |
更多常见参数:
1 | coverage run test_simple_class.py arg1 arg2 --branch --include=PATH1,PATH2 --omit=PATH1,PATH2 --source=SRC1,SRC2 |
arg1, arg2
:test_simple_class.py
执行时的参数--branch
:统计分支覆盖率,默认只有行覆盖率--include=PATH1,PATH2
:包含路径--omit=PATH1,PATH2
:排除路径--source=SRC1,SRC2
:覆盖率要统计的源信息
API 方式
可以在 Python 代码中直接调用 coverage
模块执行代码覆盖率的统计:
1 | import coverage |
查看覆盖率结果
简单文本方式
根据覆盖率统计结果文件
.coverage
展示统计结果,-m
参数展示没被覆盖到的代码行号。1
coverage report -m
输出结果如下:
1
2
3Name Stmts Miss Cover Missing
----------------------------------------------------
test_simple_class.py 18 2 89% 20, 30HTML 格式
根据覆盖率统计结果文件
.coverage
把结果以 HTML 格式保存在htmlcov
文件夹里。打开
htmlcov/index.html
即可看到覆盖率报告。XML格式
根据覆盖率统计结果文件
.coverage
把结果以 XML 格式保存在coverage.xml
文件里。