Python Coverage.py警告:未收集任何数据。(未收集数据)
我正在尝试使用覆盖率模块为django项目查找覆盖率,但是得到Python Coverage.py警告:未收集任何数据。(未收集数据),python,django,pytest,coverage.py,test-coverage,Python,Django,Pytest,Coverage.py,Test Coverage,我正在尝试使用覆盖率模块为django项目查找覆盖率,但是得到 Coverage.py warning: No data was collected. (no-data-collected) 我的项目文件夹包含src和tests文件夹 当我跑的时候 coverage run -m pytest && coverage report 它生成一个报告,该报告100%覆盖测试文件夹中的文件列表。 而当我跑的时候 coverage run --source=src -m pytest
Coverage.py warning: No data was collected. (no-data-collected)
我的项目文件夹包含src和tests文件夹
当我跑的时候
coverage run -m pytest && coverage report
它生成一个报告,该报告100%覆盖测试文件夹中的文件列表。
而当我跑的时候
coverage run --source=src -m pytest && coverage report
上面说
Coverage.py warning: No data was collected. (no-data-collected)
No data to report.
当我试图在.coveragerc
中给出source=src
或include=src
时,也会出现相同的警告。上述所有情况下的测试均通过
我想要src文件夹的覆盖范围。
是因为我缺少一些路径设置吗?我也有同样的问题,问题出在我运行测试的路径上 现在正在运行的功能: 结构
~/Projects/ProjectName
├── manage.py
├── tests
├── src
│ ├── app_one
├── .coveragerc
命令:
~/Projects/ProjectName$ coverage run manage.py test
还有我的保险人C:
[run]
include = */src/*
omit = *migrations*, *tests*
plugins = django_coverage_plugin
如果您需要在
.coveragerc
中使用“source”,可以编写如下代码
[run]
source = src
omit = *migrations*, *tests*
plugins = django_coverage_plugin
问题是您没有指定从哪个目录获取覆盖率 您可以在
.coveragerc
文件或命令行中指定:
pytest tests -v --cov-report term --cov-report html:htmlcov --cov-report xml --cov-fail-under=90 --cov=<the-dir-to-colect-coverage-from>
奖金:
如果要从覆盖范围中删除文件,可以在项目根目录中添加.coveragerc
文件:
[pytest]
addopts = -v --cov-report term --cov-report html:htmlcov --cov-report xml --cov-fail-under=<coverage-percentage-desired> --cov=<the-dir-to-colect-coverage-from>
[run]
omit =
# omit everything in the folder
proj-ab/api/confs/
# omit file
proj-ab/models/file-not-covered.py
要求:
在这些示例中,我使用的是需求:pytest==4.6.2
和pytest-cov==2.7.1
覆盖率(由pytest-cov
使用)需要tests文件夹包含\uuu init\uuuuu.py
才能收集任何数据
我将\uuuu init\uuuu.py
添加到tests文件夹,然后覆盖率按预期收集数据
参考我也有同样的问题,上面的答案并没有完全解决。事实证明,您需要将\uuu init\uuu.py
放在每个有测试的子目录中。我在tox中遇到了这个错误:
Coverage.py warning: No data was collected. (no-data-collected)
我的配置执行模块的安装,并测试该模块,而不是源代码。但是,test discovery在我的应用程序包中发现了一个我命名为test.*.py
的模块,导致PYTHONPATH
混乱,并导致无法收集覆盖详细信息。将模块重命名为不以test\uu开始解决了问题。可能您没有从src文件夹运行代码?将--debug=trace添加到覆盖率运行行。它将打印有关执行的每个文件的信息,是否跟踪,如果没有,为什么不打印。尝试用实际路径替换src。它应该指向一个文件夹,而不是一个文件。ProjectName文件夹中的.coveragerc文件在哪里?将更新上面的结构。您现在在哪里运行pytest?我发现这个评论对我很有用,因为我正在寻找解决我的单元测试中pytest cov使用问题的方法。谢谢你!