news 2026/6/26 7:09:07

pytest-cov:给 pytest 测试加上覆盖率报告

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pytest-cov:给 pytest 测试加上覆盖率报告

文章目录

  • pytest-cov:给 pytest 测试加上覆盖率报告
    • 1、这玩意儿是干嘛的
    • 2、比直接用 coverage run 强在哪
    • 3、安装和基本用法
    • 4、适合哪些人用

pytest-cov:给 pytest 测试加上覆盖率报告

pytest-cov 在 GitHub 上已经拿到 2,043 Star 了。

这是个 pytest 插件,用途很单一:在跑测试的时候顺手把代码覆盖率算出来,输出成报告。对写 Python 项目的人来说,测试和覆盖率基本是标配,pytest-cov 就是把这两件事串在了一起。

1、这玩意儿是干嘛的

pytest 本身是个 Python 测试框架,写测试、跑测试、生成报告都很顺手。但测完了,你总得知道哪些代码跑过、哪些没跑过吧?pytest-cov 就是干这个的。

它底层用的是 coverage.py,但做成了插件形式,直接挂到 pytest 里面。跑测试的时候加一行参数,覆盖率报告就跟着出来了,不用单独跑 coverage 命令。

2、比直接用 coverage run 强在哪

有人可能觉得,直接用coverage run -m pytest不也一样吗?还真不完全一样。

pytest-cov 做了几件事,是直接用 coverage 搞不定的:

第一,自动处理 .coverage 文件。多个测试进程跑下来,coverage 数据能自动合并,不用你手动擦除再拼接。

第二,支持详细的覆盖率上下文。加个--cov-context=test,每条测试用例的名称都会记录在上下文里,包括参数化测试的每个参数组合。排查哪条测试覆盖了哪行代码,这个信息很有用。

第三,跟 pytest-xdist 兼容。你开多进程跑测试,或者上远程解释器,覆盖率数据照样能汇总,不会丢。

第四,sys.path 的行为跟直接跑 pytest 保持一致。用coverage run的时候,当前工作目录会被塞进 sys.path,pytest-cov 不会有这个问题。

3、安装和基本用法

安装一条命令:

pip install pytest-cov

如果要在分布式环境下跑,顺便把 pytest-xdist 也装上:

pip install pytest-xdist

跑测试的时候加上 coverage 参数:

pytest --cov=myproj tests/

这里--cov=myproj指定要统计覆盖率的模块,tests/是测试目录。终端会直接输出类似这样的报告:

-------------------- coverage: ... --------------------- Name Stmts Miss Cover ---------------------------------------- myproj/__init__ 2 0 100% myproj/myproj 257 13 94% myproj/feature4286 94 7 92% ---------------------------------------- TOTAL 353 20 94%

需要把多次测试的覆盖率拼在一起,加--cov-append就行。默认情况下,每次跑测试前 .coverage 文件会被清空,保证数据干净。

从 pytest-cov 6.3 升级上来的要注意:老版本用 .pth 文件来支持子进程的覆盖率测量,7.0 版本之后这个机制被移除了,改靠 coverage 自己的 patch 选项来实现。

4、适合哪些人用

  • 用 pytest 写单元测试,想看覆盖率报告的 Python 开发者
  • 项目上了 pytest-xdist 分布式测试,需要汇总覆盖率数据的团队
  • 想在 CI 流水线里自动生成覆盖率报告、对代码质量有要求的工程

这插件没有花哨的功能,就是把 pytest 和 coverage 接好,让你少写几行命令,少踩几个坑。

生成覆盖率报告、对代码质量有要求的工程

这插件没有花哨的功能,就是把 pytest 和 coverage 接好,让你少写几行命令,少踩几个坑。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 7:03:07

IT爱学堂-MKSZ-AI Agent股票异动风控机器人实战(支持美股+A股)

获课:aixuetang.xyz/21990/ 在复杂多变的金融市场中,传统的静态风险阈值往往难以适应不同市场环境的切换,极易导致在剧烈震荡中频繁误报,或在趋势性行情中漏报重大风险。因此,构建一套行情波动风险的智能设定体系&…

作者头像 李华
网站建设 2026/6/26 7:02:29

PSASP新能源并网仿真:从建模到工程应用的全流程指南

1. 项目概述:当传统电力仿真遇上新能源浪潮干了十几年电力系统仿真,从最早的手算潮流到后来的各种商业软件,我亲眼看着这个领域从“象牙塔”里的理论研究,变成了支撑电网安全稳定运行的“刚需工具”。最近几年,最让我和…

作者头像 李华
网站建设 2026/6/26 7:02:01

FastAPI+LangChain打造智能招聘系统-网易云课堂

获课:97it.top/16771/ 在智能招聘系统全面拥抱大模型的今天,Token早已不再是单纯的技术计量单位,而是悬在每一个业务负责人头顶的“财务达摩克利斯之剑”。过去,我们习惯了SaaS软件按账号付费的稳定预期,但在AI时代&am…

作者头像 李华
网站建设 2026/6/26 7:00:02

【网络安全】Burp Suite重发HTTP请求解CTFHUB题

在学习网络安全技能时,到CTFHUB去做做题,是很有帮助的,其中一web基础题:HTTP Method is GETUse CTF**B Method, I will give you flag.Hint: If you got 「HTTP Method Not Allowed」 Error, you should request index.php.访问题…

作者头像 李华
网站建设 2026/6/26 6:58:30

计算机小程序毕设实战-基于 SpringBoot 的移动端书籍竞拍服务小程序设计与实现 面向校园用户的书籍拍卖交易管理系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华