pytest-2.6.0:更短的回溯、新的警告系统、测试运行器兼容性

pytest 是一个成熟的 Python 测试工具,自身拥有超过 1000 个测试,在许多不同的解释器和平台上通过。

2.6.0 版本应向后兼容 2.5.2,并修复了大量错误,带来了一些新功能,主要包括

  • 默认情况下,回溯信息更短:只显示第一个(测试函数)入口和最后一个(失败位置)入口,中间的入口只以“短”格式显示。使用 --tb=long 可恢复旧的行为,即到处显示“长”入口。

  • 一个新的警告系统,报告收集和执行过程中的异常情况。例如,现在忽略收集带有 __init__ 的 Test* 类会产生警告。

  • 对 nose/mock/unittest 集成的各种改进

另请注意,2.6.0 版本放弃了“零报告错误”政策,因为不幸的是,要跟上它太难了。相反,我们现在更倾向于处理 https://bitbucket.org/pytest-dev/pytest/issues?status=new&status=open&sort=-votes 问题跟踪器中“被点赞”的问题。

请参阅文档:

像往常一样,您可以通过 pypi 升级:

pip install -U pytest

感谢所有贡献者,其中包括

Benjamin Peterson Jurko Gospodnetić Floris Bruynooghe Marc Abramowitz Marc Schlaich Trevor Bekolay Bruno Oliveira Alex Groenholm

玩得开心,holger krekel

2.6.0

  • 修复 issue537:默认情况下避免导入旧的断言重解释代码。感谢 Benjamin Peterson。

  • 修复 issue364:默认情况下缩短和增强回溯表示。新的“--tb=auto”选项(默认)将只显示第一个和最后一个入口的完整回溯。您可以使用“--tb=long”恢复旧的行为,即以完整形式打印所有入口。此外,默认情况下,短入口的打印方式现在与“--tb=native”非常相似。

  • 修复 issue514:让断言重解释了解私有类属性。感谢 Benjamin Peterson。

  • 更改 -v 输出以包含测试的完整节点 ID。用户可以从测试运行中复制节点 ID,包括行号,并将其用作位置参数,以便只运行单个测试。

  • 修复 issue 475:如果调用 pytest.raises 时使用错误的异常类型,则提前并可理解地失败。

  • 修复 issue516:在入门指南中说明当前依赖项。

  • 清理 setup.py 并指定支持的版本。感谢 Jurko Gospodnetic 的 PR。

  • 当测试以 -v 运行时,将 XPASS 颜色更改为黄色而不是红色。

  • 修复 issue473:解决 mock 在双重打补丁时将未绑定方法放入类字典的问题。

  • 修复 issue498:如果夹具终结器失败,确保夹具仍然失效。

  • 修复 issue453:pytest_assertrepr_compare 钩子的结果现在会将其换行符转义,以免 format_exception 崩溃。

  • 内部新警告系统:pytest 现在在检测到测试收集或执行中的异常情况时会生成警告。警告最终发送到新的 pytest_logwarning 钩子,目前仅由终端插件实现,该插件在摘要行中显示警告,并在指定 -rw(报告警告)时显示更多详细信息。

  • 对于带有 __init__ 的测试类和测试模块中看起来像测试但不是函数的调用,将跳过转换为警告。

  • 修复 issue436:通过使用 parse_known_args 的结果而不是以前不稳定的启发式方法,改进了从命令行参数查找初始 conftest 文件。感谢 Marc Abramowitz 在这方面提供的测试和初始修复方法。

  • 修复 issue #479:在测试模块收集/加载期间正确处理 nose/unittest(2) SkipTest 异常。感谢 Marc Schlaich 的完整 PR。

  • 修复 issue490:将 pytest_load_initial_conftests 包含在文档中并改进文档字符串。

  • 修复 issue472:澄清 pytest.config.getvalue() 如果在命令行解析之前触发,则无法工作。

  • 合并 PR123:改进了 mock.patch 装饰器与测试的集成。

  • 修复 issue412:现在可以捕获对 stdout/stderr FD 级流的操作而不会崩溃。

  • 修复 issue483:trial/py33 现在可以正常工作。感谢 Daniel Grana 的 PR。

  • 改进了 pytest 与“python setup.py test”集成的示例,现在它有一个通用的“-a”或“--pytest-args”选项,您可以在其中将其他选项作为带引号的字符串传递。感谢 Trevor Bekolay。

  • 简化了内部捕获机制,使其对更改 FD1/FD2 的测试或设置更具鲁棒性,现在还更好地集成了 pytest.pdb() 在单个测试中。

  • Marc Abramowitz 的 PR 提供了对 pytest 自身测试套件泄漏检测的改进。

  • 修复 issue492:避免 test_writeorg 中的泄漏。感谢 Marc Abramowitz。

  • 修复 issue493:不要使用 python setup.py test 在 doc 目录中运行测试(为此使用 tox -e doctesting)

  • 修复 issue486:更好地报告和处理早期 conftest 加载失败

  • 清理和简化了一些内部 conftest 处理。

  • 在捕获异常时,更努力地打破引用循环。感谢 Jurko Gospodnetic。

  • 修复 issue443:修复跳过示例以使用正确的比较。感谢 Alex Groenholm。

  • 支持 nose 风格的模块、类和函数上的 __test__ 属性,包括 unittest 风格的类。如果设置为 False,则不会收集测试。

  • 修复 issue512:为 monkeypatch 插件中可能未设置的参数显示“<notset>”。改进了文档中的输出。

  • 避免导入“py.test”(“pytest”的旧别名模块)