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

使用tox运行pytest测试时出现no-data-collected覆盖率警告

解决tox+pytest覆盖率无数据收集的警告问题

这个问题核心是tox的隔离虚拟环境默认没把项目的src目录加入Python路径,导致pytest-cov找不到要覆盖的代码;而直接运行pytest时,本地环境的Python路径包含项目根目录,所以能正常收集覆盖率数据。

给你两个靠谱的解决方案:

方案一:给tox环境添加PYTHONPATH

修改你的tox.ini,在[testenv]下添加环境变量指定src路径,同时把pytest参数直接写在commands里避免配置冲突:

[tox]
envlist = py39

[testenv]
deps = 
    pytest
    pytest-cov
    -rrequirements.txt
    -rrequirements.test
# 添加这行,让tox环境能找到src里的代码
setenv = PYTHONPATH={toxinidir}/src
# 直接在commands里指定pytest参数,确保覆盖规则生效
commands = pytest -v --cov=src tests/ {posargs}

# 可以把原来的[pytest] section注释掉,避免重复配置干扰
# [pytest]
# addopts =
#     -v
#     --cov=src
#     tests/

方案二:用editable模式安装项目(更符合Python包规范)

如果你的项目是标准src布局,推荐在tox环境里先安装项目的可编辑版本,这样src里的代码会被识别为已安装的包,覆盖率收集自然正常:

[tox]
envlist = py39

[testenv]
deps = 
    pytest
    pytest-cov
    -rrequirements.txt
    -rrequirements.test
# 先安装项目的editable版本,再跑测试
commands = 
    pip install -e .
    pytest {posargs}

[pytest]
addopts =
    -v
    --cov=src
    tests/

这两种方案都能解决你遇到的CoverageWarning: No data was collected问题,选哪种看你项目的具体情况,方案二更适合长期维护的项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:13:13