我有一个使用的python项目:
- pipenv
- 毒物
- pytest
还有更多
基本上,我想将tox
添加到我的gitlab管道中。几乎所有东西似乎都可以正常工作,从毒药中调用mypy
,flake8
或black
可以正常工作。但是,当我在启用覆盖率的情况下致电tox -e py37
(因此我想运行测试)时,运行了测试,我可以看到其结果,但是覆盖率是0%
(100%
仅在空的__init__
文件等),我得到警告:Coverage.py warning: No data was collected. (no-data-collected)
。
这是我与tox.ini
的pytest相关的部分:
[tox]
envlist = flake8,mypy,black,py37
[testenv]
extras = tests
commands=
pytest --cov -ra --tb=short {posargs}
这是我的.coveragerc
:
[run]
branch = True
source =
foo
omit =
foo/__init__.py
foo/__main__.py
foo/bar/__init__.py
foo/baz/__init__.py
[report]
exclude_lines =
pragma: no cover
if __name__ == .__main__.
show_missing = True
我有一个工作的setup.py
,其中包括所有必需的软件包:pytest
,pytest-cov
,还有更多用于样式等的软件包(有效)。我的__init__.py
文件夹中也有tests
。
有趣的是,如果我从命令行(在tox.ini
中调用pipenv
中具有的相同命令:pytest --cov -ra --tb=short
,则得到相同的结果,但覆盖范围正常(在我的情况下是100%
)。
有没有办法解决?我不希望我的管道显示错误的覆盖范围,即使它们以某种方式神奇地得到了正确的覆盖范围,我仍然希望在本地看到它。
P.S当我尝试解决此问题时,我用tox --sitepackages -e py37
打电话给tox,但遇到了类似test command found but not in testenv
的错误。除了这些错误,我的报道还不错。但是后来我从全局pip寄存器中卸载了tox
,pytest
和pytest-cov
,现在无论是否带有--sitepackages
标志,我仍然可以获得0%
的覆盖率