我尝试使用覆盖率模块查找django项目的覆盖率,但是得到
Coverage.py warning: No data was collected. (no-data-collected)
我的项目文件夹有src和tests文件夹。
当我奔跑
coverage run -m pytest && coverage report
它生成一个覆盖率为100%的报告,其中包含tests文件夹中的文件列表。
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文件夹。是因为我缺少一些路径设置吗?
8条答案
按热度按时间qxsslcnc1#
coverage
(由pytest-cov
使用)需要tests文件夹包含__init__.py
,然后才能收集任何数据。我将
__init__.py
添加到tests文件夹中,然后coverage按预期收集数据。参见http://thomas-cokelaer.info/blog/2017/01/pytest-cov-collects-no-data-on-travis/
rwqw0loc2#
我也遇到了同样的问题,问题出在我运行测试的路径上。
现在正在使用的功能:
结构
指令:
和我的.coveragerc:
lsmepo6l3#
问题是您没有指定从哪个目录获取覆盖率。
可以在
.coveragerc
文件或命令行中指定:如果需要,您可以只执行
pytest tests
并在项目根目录下的pytest.ini
上添加pytest
参数:奖金:
如果你想忽略coverage中的文件,你可以在你的项目根目录下添加一个
.coveragerc
文件:**需求:**在这些例子中,我使用了需求:
pytest==4.6.2
和pytest-cov==2.7.1
von4xj4u4#
我遇到了同样的问题,上面的答案并没有完全解决它。事实证明,你需要让
__init__.py
在每个有测试的子目录中。mjqavswn5#
如果你需要在你的
.coveragerc
中使用'source',你可以写如下6fe3ivhb6#
我在毒理学检查中遇到了这个错误:
我的配置执行模块的安装并测试该模块,而不是测试源代码。但是,测试发现在我的应用程序包中找到了我命名为
test_*.py
的模块,导致PYTHONPATH
混淆,并导致无法收集覆盖率详细信息。重命名模块以不以test_
开头解决了该问题。v2g6jxz67#
我已经有了
__init__.py
在必要的地方。我不知道为什么它的工作,但我只是这样做:
然后:
我得到了我想要的结果
6yt4nkrj8#
我在运行
pip install .
时遇到了同样的问题。因为包名和代码目录具有相同的名称和在当前目录中,覆盖率可能选择了目录,而运行的代码来自site-package
(反之亦然)。pip install -e .
确保没有混淆。