pytest-2.7.0:修复、特性、性能改进

pytest 是一个成熟的 Python 测试工具,拥有超过 1100 个自测试,在许多不同的解释器和平台上通过。此版本应与 2.6.X 兼容。

请参阅下面的更改,并访问文档:

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

pip install -U pytest

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

Anatoly Bubenkoff Floris Bruynooghe Brianna Laugher Eric Siegerman Daniel Hahler Charles Cloud Tom Viner Holger Peters Ldiary Translations almarklein

玩得开心,holger krekel

2.7.0(与 2.6.4 相比)

  • 修复 issue435:在断言重写激活时使 reload() 工作。感谢 Daniel Hahler。

  • 修复 issue616:conftest.py 文件及其包含的 fixture 现在被正确地考虑可见性,这与当前工作目录和所使用的测试参数无关。非常感谢 Eric Siegerman 和他的 PR235,其中包含针对 conftest 可见性的系统测试,并且现在已通过。此更改还引入了 rootdir 的概念,该概念作为新的 pytest 标头打印,并在 pytest 自定义网页中进行了文档说明。

  • 更改“转移”测试的报告,即在一个文件中收集但实际上来自另一个文件的测试(例如,当测试类中的测试来自不同文件中的基类时)。我们现在显示 nodeid 并通过后缀指示另一个文件。

  • 添加通过环境变量 PYTEST_ADDOPTS 设置命令行选项的功能。

  • 添加了关于 bitbucket 和 github 上新的 pytest-dev 团队的文档。请参阅 https://pytest.cn/en/stable/contributing.html 。感谢 Anatoly 的推动和前期工作。

  • 修复 issue650:新选项 --doctest-ignore-import-errors,它将把 doctest 中的导入错误转换为跳过。感谢 Charles Cloud 的完整 PR。

  • 修复 issue655:解决导致 python2/3 将 sys.exc_info 泄漏到 fixture/测试中,从而导致第三方代码失败的不同方式。

  • 修复 issue615:断言重写在格式化布尔运算时没有正确转义 % 符号,这在混合布尔值和模运算符时导致问题。感谢 Tom Viner 的报告、分类和修复。

  • 实现 issue351:添加将参数化 id 指定为可调用函数以生成自定义测试 id 的功能。感谢 Brianna Laugher 的想法和实现。

  • 引入并记录新的 hookwrapper 机制,该机制对希望包装某些钩子执行以达到其目的的插件很有用。这取代了 pytest 自身和一些外部插件使用的未文档化的 __multicall__ 协议。请注意,pytest-2.8 计划停止支持旧的 __multicall__,并且只支持 hookwrapper 协议。

  • 显著加快插件钩子的调用速度

  • 在内置 pytest 插件中使用 hookwrapper 机制。

  • 为 doctest 标志添加了一个 doctest ini 选项,感谢 Holger Peters。

  • 在文档中添加注释,如果您想标记一个参数并且该参数是可调用的,您还需要传入一个原因,以将其与“装饰器”情况区分开来。感谢 Tom Viner。

  • “python_classes”和“python_functions”选项现在支持 glob 模式进行测试发现,如 issue600 中所讨论。感谢 Ldiary Translations。

  • 允许使用非参数化 fixture 覆盖参数化 fixture,反之亦然(bubenkoff)。

  • 修复 issue463:针对“parameterize”拼写错误引发特定错误 (pfctdayelise)。

  • 失败时,设置 sys.last_valuesys.last_typesys.last_traceback,以便用户可以通过事后调试检查错误 (almarklein)。