问题描述
我有一个包,我需要在其中生成两个不同的报告,一个用于整个存储库,另一个仅用于核心。包是这样的:
source/
core/
__init__.py
config.py
foo.py
gui/
__init__.py
...
locale/
__init__.py
...
tests/
all/
__init__.py
...
assets/
__init__.py
...
gui/
__init__.p
...
core/
__init__.py
test_foo.py
...
__init__.py
utils.py
...
.coveragerc
setup.py
tox.ini
[tox]
envlist = py27,py35,py36,py37
skip_missing_interpreters = true
[testenv]
deps =
coverage
pycairo<2.0.0,>=1.10.0
commands_pre =
coverage erase
commands = coverage run ./setup.py pytest
commands_post =
coverage report -m
coverage html
coverage XML
...
[testenv:py36]
commands_pre = {[testenv]commands_pre}
commands =
{[testenv]commands}
commands_post = {[testenv]commands_post}
我想这里最重要的是这条线
coverage run ./setup.py pytest
我的 .coveragerc
看起来像:
[run]
source=
source
omit =
*__init__*
*/usr/local/lib*
*/test*
还有 pytest.ini
[pytest]
testpaths = tests
原则上这确实有效,但是,我需要与此并行生成另一个仅针对核心的覆盖测试(仅针对源 source/core
并在 test/core
中运行测试)。
我尝试在 tox.ini
中创建一个新环境,然后运行:
commands = coverage run --source=source/core ./setup.py pytest tests/core
我得到了:
Coverage.py warning: No data was collected. (no-data-collected)
invalid command name 'tests/core'
ERROR: InvocationError for command
报告给了我 0%
另一方面,如果我运行 coverage run --source=source/core ./setup.py pytest
,它将执行所有测试,包括 gui、core 和其他我不感兴趣的东西在此报告中,我收到了分段错误和另一个调用错误(可能由与此问题无关的包核心生成)
这几乎不起作用的唯一方法是通过设置修改 .coveragerc
:
source=
source/core
然后运行 coverage run ./setup.py pytest
的作品我已经牺牲了原来的覆盖率测试。
关于如何让这两个覆盖率报告独立运行(一个用于 WHOLE 包,另一个仅用于核心)以及如果可能,在 GitLab 中为它提供两个不同的徽章有什么想法吗?
非常感谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)