使用Coverage.py测试Django项目时如何忽略.virtualenv目录下的包
修复Coverage.py不排除虚拟环境目录的方案
核心问题根因
- 配置文件名错误:Coverage 5.5版本默认读取的配置文件名为
.coveragerc,你创建的.coveragec不会被自动识别,除非手动加--config参数指定。 - 路径匹配规则错误:你写的
*.virtualenvs/*、*./virtualenvs/*语法不符合Coverage的通配符规则,*不能直接匹配目录前缀,匹配任意位置下目标目录的正确写法是*/目标目录名/*。 - 虚拟环境路径不匹配:可先执行
pipenv --venv确认你的虚拟环境实际存储路径,再对应写匹配规则。
正确配置步骤
- 将项目根目录的
.coveragec重命名为.coveragerc,修改配置内容如下:
[run] source = . omit = */.virtualenvs/* */.venv/* */tests/* */apps.py */manage.py */__init__.py */migrations/* */asgi.py */wsgi.py */admin.py */urls.py [report] omit = */.virtualenvs/* */.venv/* */tests/* */apps.py */manage.py */__init__.py */migrations/* */asgi.py */wsgi.py */admin.py */urls.py
- 清除之前的旧Coverage缓存数据:
coverage erase - 正常执行测试生成报告即可,无需额外加
--omit参数:
coverage run manage.py test -v 2 coverage html
异常排查
如果规则仍未生效,执行coverage debug config查看当前加载的配置文件路径和omit规则列表,确认规则已被正确加载。
内容的提问来源于stack exchange,提问作者David.B
相关产品推荐
相关产品推荐

