ald*_*nor 25 python code-coverage coverage.py pytest tox
我有一个奇怪的问题tox
,py.test
,coverage
和pytest-cov
:当py.test
与--cov
选项是从启动tox
,这似乎需要__init__.py
的文件tests
是不会立即明显的文件夹.
在撰写这篇文章时,我通过添加上述内容解决了最初的问题tests/__init__.py
,但到目前为止我还没有完全理解为什么它确实有效或无效,所以我仍然在寻求帮助.请参阅下面的详细信息.
我在SO上找到了一个相关的问题,但它只会让它更加混乱,因为答案似乎与我到目前为止所得到的相反: `py.test`和`__init __.py`文件
另请参阅此处的官方文档:py.test - 良好的集成实践(页面底部).
简化的项目结构:
setup.py
tox.ini
.coveragerc
project/
__init__.py
module1.py
module2.py
tests/
__init__.py (optional, an empty file)
test_module1.py
test_module2.py
Run Code Online (Sandbox Code Playgroud)
相关部分tox.ini
:
[testenv:check]
commands = py.test --cov=project --cov-report=term
deps =
pytest
coverage
pytest-cov
[pytest]
python_files = test_*.py
norecursedirs = .tox
Run Code Online (Sandbox Code Playgroud)
相关部分.coveragerc
:
[run]
branch = True
omit = project/tests/*
Run Code Online (Sandbox Code Playgroud)
现在,结果如下:
py.test --cov=project --cov-report=term
从项目root =>正确覆盖运行tests/__init__.py
文件是否存在.tox -e check
没有tests/__init__.py
=>测试被发现并运行,但我收到警告"Coverage.py警告:没有收集数据." 并且所有模块的覆盖率均为0%tox -e check
with tests/__init__.py
=>再次正确覆盖.对于我来说,为什么tests/__init__.py
文件必须存在(添加此空文件解决了初始问题)并不是很明显tox
,但是当您手动运行测试/覆盖时无关紧要.有任何想法吗?
谢谢.