掌握 Python 代码覆盖率测试利器 —— coverage.py
Coverage(通常指 coverage.py)是一个用于测量 Python 程序测试覆盖率的工具。它能告诉你哪些代码被测试覆盖了,哪些没有,从而帮助你提高测试质量。
使用 pip 安装非常简单:
pip install coverage
假设你有一个 Python 项目,包含以下文件:
mymath.py:待测试的模块test_mymath.py:对应的单元测试运行测试并生成覆盖率报告:
coverage run -m pytest
coverage report -m
上述命令会:
coverage 执行 pytest 测试-m 显示缺失行号)可视化你的覆盖率结果:
coverage html
执行后会在 htmlcov/ 目录下生成交互式 HTML 报告,打开 index.html 即可查看。
你可以通过配置文件自定义行为。在项目根目录创建 .coveragerc:
[run]
source = myproject
omit =
*/tests/*
*/venv/*
[report]
exclude_lines =
pragma: no cover
def __repr__
raise AssertionError
raise NotImplementedError
该配置指定源码路径、忽略测试和虚拟环境,并排除某些不计入覆盖率的代码行。
coverage run script.py:运行单个脚本coverage run -m unittest:运行 unittestcoverage report:终端显示覆盖率摘要coverage html:生成 HTML 报告coverage xml:生成 Cobertura 兼容的 XML 报告(用于 CI)coverage 集成到 CI/CD 流程中# pragma: no cover 忽略无法测试的代码