Coverage.py:Python 代码覆盖率检测,一个库搞定
·
Coverage.py:Python 代码覆盖率检测,一个库搞定
Coverage.py 在 GitHub 上已经拿到 3,386 Star 了。
它做的是 Python 代码覆盖率检测。你跑完测试,它告诉你有多少代码被执行过,哪些分支还没走到。Python 标准库里自带的代码分析工具和追踪钩子,就是它的底层引擎。
不用它,你缺的是什么
写过 Python 测试的人迟早会遇到这个问题:测试全绿了,但心里没底。
测试覆盖率不等于代码质量,但覆盖率数字能告诉你测试到底测了多少东西。如果没有覆盖率工具,你只能凭感觉判断——那行新代码到底被测试跑到没有?那个异常分支是测试了还是忘了?
Coverage.py 给出的报告一目了然:每个文件、每行代码的执行状态,百分比一清二楚。
支持哪些 Python 版本
项目支持的 Python 版本覆盖了当前主流选择:
- Python 3.10 到 3.15 beta,包括 free-threading 模式
- PyPy3 3.10 和 3.11
也就是说,无论你用 CPython 的主线版本还是 PyPy,都能用上。
怎么用
Coverage.py 的用法很直接。安装:
pip install coverage
跑测试并收集覆盖率:
coverage run -m pytest
查看报告:
coverage report
生成 HTML 格式的详细报告:
coverage html
HTML 报告会在浏览器里打开,每个源文件的高亮版本,哪行执行了、哪行没执行,颜色区分,一眼看懂。

比你想的更深一点
Coverage.py 做的不是简单的行号记录。它利用 Python 标准库的 trace 模块和 AST 分析工具,能精确识别哪些行是真正可执行的代码,哪些是注释或空行。
这意味着它的报告不会把空行算作「未覆盖」,也不会漏掉分支。它还支持分支覆盖率测量(branch coverage),告诉你 if/else 的两个分支是否都走到了。
企业级使用也考虑到了,通过 Tidelift 可以提供商业级的支持和安全响应。

适合谁用
- 用 pytest、unittest 跑测试的 Python 开发者
- 在 CI 流程中需要卡覆盖率阈值的团队
- 维护开源库,想给贡献者提供测试覆盖指引的维护者
st 跑测试的 Python 开发者
- 在 CI 流程中需要卡覆盖率阈值的团队
- 维护开源库,想给贡献者提供测试覆盖指引的维护者
更多推荐

所有评论(0)