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 中的两个常用布局的工作示例。