Tox¶
当使用 tox 时,您可以拥有超紧凑的配置 - 您可以在 tox.ini
中完成所有操作。
[tox]
envlist = ...
[tool:pytest]
...
[coverage:paths]
...
[coverage:run]
...
[coverage:report]
..
[testenv]
commands = ...
用户通常遇到的一个问题是,pytest-cov 默认会清除之前的覆盖率数据,因此,如果您使用多个环境运行 tox,则最终会得到不完整的覆盖率。
为了防止此问题,您需要使用 --cov-append
。仍然建议清除之前的覆盖率数据以获得一致的输出。类似这样的 tox.ini
对于顺序运行应该足够了
[tox]
envlist = clean,py27,py36,...
[testenv]
commands = pytest --cov --cov-append --cov-report=term-missing ...
deps =
pytest
pytest-cov
[testenv:clean]
deps = coverage
skip_install = true
commands = coverage erase
对于并行运行,我们需要设置一些依赖项并添加一个额外的报告环境,如下所示
[tox]
envlist = clean,py27,py36,report
[testenv]
commands = pytest --cov --cov-append --cov-report=term-missing
deps =
pytest
pytest-cov
depends =
{py27,py36}: clean
report: py27,py36
[testenv:report]
deps = coverage
skip_install = true
commands =
coverage report
coverage html
[testenv:clean]
deps = coverage
skip_install = true
commands = coverage erase
根据您的项目布局,您可能需要额外的配置,请参阅 https://github.com/pytest-dev/pytest-cov/tree/master/examples 中的两个常用布局的工作示例。