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

pytest-cov生成覆盖率报告无数据、代码覆盖率为0问题排查

问题根因

你的项目采用标准Python src 目录布局,出现0覆盖率、无数据收集警告的核心原因是:Coverage工具追踪的代码路径,和测试运行时实际导入加载的代码路径不匹配,属于包导入路径配置错误,和pytest-cov工具本身逻辑无关。

排查解决步骤
  • 先验证导入路径是否正确
    在项目根目录(即最外层CorGE文件夹所在路径)启动Python解释器,执行以下代码确认导入来源:
    import CorGE
    print(CorGE.__file__)
    
    如果输出路径不是你本地项目下src/CorGE/__init__.py的绝对路径,说明Python加载的不是你当前开发的源码,Coverage自然无法采集执行数据。
  • 修复导入路径问题
    永久修复方案:在项目根目录执行以下命令,以可编辑模式安装本地包:
    pip install -e .
    
    该命令会将本地src下的CorGE包链接到当前Python环境的包目录,后续所有import CorGE都会准确加载本地开发的源码,不会出现路径错位。
    临时验证方案:如果暂时不想写打包配置文件(pyproject.toml/setup.py),可以在执行测试时手动将src目录加入Python搜索路径:
    PYTHONPATH=./src pytest tests/ --cov=CorGE
    
  • 修正命令参数
    你之前执行的命令存在路径参数错误:
    1. 第一条命令--cov CorGE/指向的是外层项目目录,而非实际的Python包,--cov参数直接传包名CorGE即可,不需要带目录斜杠前缀
    2. 第二条命令--source=CorGE/src/CorGE传入的是相对路径,Coverage无法匹配运行时加载的模块绝对路径,同样改为包名即可
      导入路径修复后,在项目根目录执行以下命令即可生成正确的覆盖率报告:
    pytest tests/ --cov=CorGE
    
额外问题提示

你提供的测试代码存在断言逻辑错误:os.listdir().sort()的返回值是None,直接用assertEqual比较两个None会永远通过,无法实际校验文件名列表是否符合预期,需要改为sorted(os.listdir(目标路径))再做比较。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:27:26