基于覆盖率数据排除测试的pytest插件

pytest-cov-exclude的Python项目详细描述


https://api.travis-ci.org/mhallin/cov-exclude-py.svg?branch=masterhttps://img.shields.io/pypi/v/pytest-cov-exclude.svg

pytest的基于覆盖率的测试排除插件。通过观察 行由每个测试执行,下一个测试运行可以通过 not在没有更改源文件的情况下执行测试。

如果您有一个经常重新运行的大型测试套件,那么这个插件可以 极大地改进了迭代时间。

安装

使用pip安装:

$ pip install pytest-cov-exclude

pytest-cov-exclude需要pytest 2.8或更高版本。它与 python 2.7、3.3、3.4、3.5以及pypy。它对pypy不起作用 3由于生成的覆盖率数据存在未知错误。

用法

首次运行测试套件时,将启用每个测试覆盖率 这套套房比平时要花一点时间:

$ py.test

==================== test session starts =====================

# Test output...

================ MANY passed in MANY seconds =================

现在,当您重新运行测试套件时,所有测试都应该 不包括:

$ py.test

==================== test session starts =====================

# Test output...

=============== MANY deselected in FEW seconds ===============

如果测试失败,它将重新运行,即使没有任何更改以便 保留测试套件的一般故障状态。

强制包含个别测试

如果有依赖于覆盖率数据中未包含的文件的测试, 例如数据文件或生成的源,可以使用 external_dependencies。这迫使他们重新逃跑,即使没有 文件已更改:

@pytest.mark.external_dependenciesdeftest_something():# Run tests from external data files

已知错误

  • 在pytest的收集阶段对文件的更改将是 忽略。测试文件及其依赖项在 在完成测试集合之后可能有

    有一个标记为xfail的测试用例突出显示了这个问题。

运行整个测试套件

如果要强制整个测试套件重新运行,则 有两个选项:禁用插件或清除pytest的缓存:

$ py.test -p no:cov-exclude  # Disable the plugin

$ py.test --cache-clear  # Clear pytest's cache

兼容性

如前所述,这个插件需要Pytest2.8或更高版本,因为它 取决于新的缓存模块。

虽然pypy是受支持的,但是ujson库用于 序列化/反序列化不可用,因此返回到 而是使用默认的json实现。正因为如此, 使用pypy下的这个插件,测试可能实际运行slower

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java:不解析XML的简单XML。例外   KIE Workbench的java自定义UI   java将元素从bucket移动到LinkedList,但有一个元素被完全删除   如何将java stream collect转换为scala   java运行AsynkTask多次不工作   java组织。xml。萨克斯。SAXParseException:cvccomplextype。2.4.c:匹配的通配符是严格的   java是一种计算排序算法所需时间的合适方法   java在O(logn)时间内对排序整数数组中具有相同数字的数字进行计数   xpages从当前数据库javaAgent调用另一个数据库的javaAgent   java如何在instagram中上传特定位置的所有照片   JavaApachePOI可以有效地删除多个列   java创建的对象数   java我可以在关闭连接时关闭Oracle JDBC自动提交吗?