什么是Coverage.py
Coverage.py 是一个强大的Python代码测试覆盖率分析工具,帮助开发者精确了解哪些代码在测试中被执行,哪些未被覆盖。它是代码质量保障流程中不可或缺的一环,能有效发现测试覆盖的潜在问题。
Coverage.py 的核心目标是提供详尽的代码覆盖信息,让你清楚掌握测试对代码的覆盖程度。该工具会分析程序执行过程,并生成报告,展示每个文件、模块甚至单行代码的覆盖率百分比。
Coverage.py 的核心功能
Coverage.py 提供丰富的代码覆盖率分析功能:
行覆盖率测量 — 基础功能,追踪测试过程中哪些代码行被执行。
分支覆盖率分析 — 高级功能,检查条件语句(if、elif、else)中所有可能的执行路径是否都被覆盖。
报告生成 — 支持多种格式的详细报告:文本、HTML、XML、JSON。
框架集成 — 与 pytest、unittest、nose 等主流测试框架无缝协作。
排除规则配置 — 灵活排除特定文件、文件夹或代码行,避免干扰分析结果。
安装与初始配置
标准安装
使用 pip 安装 Coverage.py:
pip install coverage
安装增强功能
如果使用 pytest,建议安装 pytest-cov 插件:
pip install pytest-cov
如需支持 toml 配置文件:
pip install coverage[toml]
验证安装
安装后,确认 Coverage.py 正常运行:
coverage --version
常用命令与操作
运行覆盖率分析
对 Python 脚本进行基本覆盖率分析:
coverage run my_script.py
使用额外参数运行:
coverage run --source=my_package my_script.py
配合 unittest 运行
coverage run -m unittest discover
配合 pytest 运行
coverage run -m pytest
或使用 pytest-cov:
pytest --cov=my_module tests/
查看覆盖率报告
终端文本报告
coverage report
输出示例:
Name Stmts Miss Cover
----------------------------------------
my_module.py 25 3 88%
utils.py 15 0 100%
main.py 20 5 75%
----------------------------------------
TOTAL 60 8 87%
显示缺失行的详细报告
coverage report --show-missing
HTML 报告
coverage html
执行后,在浏览器中打开 htmlcov/index.html 即可查看交互式报告。
CI/CD 适用的 XML 报告
coverage xml
JSON 报告
coverage json
管理覆盖率数据
清除数据
图书馆中也有
推荐