101*_*101 15 python django coverage.py pytest test-coverage
我正在尝试使用覆盖模块为django项目找到覆盖范围,但得到"Coverage.py警告:没有收集数据.(无数据收集)".我的项目文件夹有src和tests文件夹.
我跑的时候
覆盖运行-m pytest &&覆盖率报告
它生成一个100%覆盖率的报告,其中包含tests文件夹中的文件列表.而我跑的时候
覆盖运行--source = src -m pytest &&覆盖率报告
它说
Coverage.py警告:未收集任何数据.(无数据收集)
无数据报告.
当我尝试在.coveragerc中给出source = src或include = src时,也会发生相同的警告.上述所有案例均通过测试.
我想要src文件夹的覆盖范围.是因为我错过了一些路径设置吗?
lou*_*ton 15
coverage(由pytest-cov)__init__.py在收集任何数据之前需要测试文件夹包含一个。
我添加__init__.py到测试文件夹,然后覆盖率按预期收集数据。
参考http://thomas-cokelaer.info/blog/2017/01/pytest-cov-collects-no-data-on-travis/
我有同样的问题,问题出在我运行测试的路径上。
现在正在做什么:
结构体
~/Projects/ProjectName
??? manage.py
??? tests
??? src
? ??? app_one
??? .coveragerc
Run Code Online (Sandbox Code Playgroud)
命令:
~/Projects/ProjectName$ coverage run manage.py test
Run Code Online (Sandbox Code Playgroud)
和我的.coveragerc:
[run]
include = */src/*
omit = *migrations*, *tests*
plugins = django_coverage_plugin
Run Code Online (Sandbox Code Playgroud)
问题是您没有指定从哪个目录获得覆盖。
您可以在.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>
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您只能在项目根目录上执行pytest tests和添加pytest参数pytest.ini:
[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 Code Online (Sandbox Code Playgroud)
奖金:
如果您想从覆盖范围中省略文件,您可以.coveragerc在项目根目录中添加一个文件:
[run]
omit =
# omit everything in the folder
proj-ab/api/confs/
# omit file
proj-ab/models/file-not-covered.py
Run Code Online (Sandbox Code Playgroud)
要求:
在这些示例中,我使用了要求:pytest==4.6.2和pytest-cov==2.7.1
| 归档时间: |
|
| 查看次数: |
7006 次 |
| 最近记录: |