You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pytest + Coverage 生成覆盖率错误 源码覆盖率为0问题咨询

问题根源

  1. 覆盖率采集命令参数配置错误:coverage run 时指定的 --source test 表示仅追踪test目录下的代码执行情况,src目录的代码执行全程不在coverage的统计范围内,无论你是子进程调用还是直接导入调用main函数,相关执行记录都不会被采集,所以查看src覆盖率时会显示100%未覆盖。
  2. 若使用子进程执行main.py的场景,即便修正了--source参数,默认coverage也无法追踪子进程内的代码执行,需要额外配置子进程追踪规则。

解决方法

1. 直接调用main函数场景(当前你调整后的测试逻辑)

直接修正覆盖率采集命令的--source参数为你需要统计的src目录即可,如需同时统计测试代码覆盖率可以写成--source=src,test:

poetry run coverage run --source src -m pytest

采集完成后执行报告命令就能看到正确的src目录覆盖率:

poetry run coverage report

2. 子进程调用main.py场景(原有测试逻辑)

如果后续需要恢复子进程调用的测试逻辑,需要额外配置coverage的多进程追踪能力:

  1. 在项目根目录新建.coveragerc配置文件,添加以下内容:
[run]
source = src
parallel = True
  1. 调整测试代码中启动子进程的命令,添加上coverage采集逻辑:
poetry run coverage run main.py [你的原有运行参数]
  1. 所有测试执行完成后,先合并多进程采集的覆盖率数据,再生成报告:
poetry run coverage combine
poetry run coverage report

内容的提问来源于stack exchange,提问作者kakyo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 18:15:05