GitLab CI/CD中Python项目覆盖率误统计第三方库的解决方法咨询
解决GitLab CI/CD中Python代码覆盖率仅统计自研模块的问题
要排除第三方库、只统计自研的b2badv_api模块,只需修改pytest命令中--cov的参数,明确指定要统计的目标模块即可,具体操作如下:
修改.gitlab-ci.yml中的script配置
将原来的pytest命令:
pytest --cov --cov-report term --cov-report xml:coverage.xml
替换为:
pytest --cov=b2badv_api --cov-report term --cov-report xml:coverage.xml
原理说明
- 原命令中的
--cov未指定目标,pytest会默认遍历当前环境下所有可访问的Python文件(包括第三方库的代码),导致覆盖率数值被拉低。 - 指定
--cov=b2badv_api后,pytest仅会统计b2badv_api模块下的自研代码,自动排除第三方库的文件。
可选进阶方案(多模块或复杂场景)
如果你的项目有多个自研模块,或需要更精细的排除规则,可以在项目根目录创建.coveragerc配置文件,示例如下:
[run] source = b2badv_api, another_module # 多个自研模块用逗号分隔 omit = */site-packages/* # 排除所有第三方库目录 */tests/* # 可选:排除测试文件本身
然后在pytest命令中使用--cov-config=.coveragerc指定配置文件:
pytest --cov --cov-config=.coveragerc --cov-report term --cov-report xml:coverage.xml
内容的提问来源于stack exchange,提问作者Marco Fumagalli
相关产品推荐
相关产品推荐

