PY.TEST 2.2.0:测试标记++、参数化+和持续时间分析

py test-2.2.0是流行的py.test测试工具的测试套件兼容版本。插件可能需要升级。它有以下改进:

  • 更简单、更强大的测试参数化:

    • new@pytest.mark.parameterize decorator以使用不同参数运行测试

    • 用于独立参数化参数的新metafunc.parameterize()API

    • 参见示例http://pytest.org/en/stable/example/parametrize.html

    • 请注意,与parameterize()相关的API仍然有点实验性,在将来的版本中可能会有所改变。

  • 改进了对测试标记的处理并改进了标记机制:

    • “-m markexpr”选项,用于根据标记选择测试

    • 用于为项目注册测试标记的新“markers”ini变量

    • 如果使用未注册的标记,则新的“-strict”会发出错误提示。

    • 参见示例示例http://pyen.org/stable

  • 持续时间分析:new“-duration=n”选项,显示n个最慢的测试执行或安装/拆卸调用。如果您想找出最慢的测试代码在哪里,这是最有用的。

  • 此外,2.2.0执行更为迫切的TearDown/Finalizers函数调用,从而在失败时获得更好、更准确的报告。

此外,还有一组常见的bug修复程序,以及对pytest自己的测试套件的清理,允许它在更广泛的环境中运行。

有关一般信息,请参阅包含示例的扩展文档:

如果要安装或升级pytest,可以键入:

pip install -U pytest # or
easy_install -U pytest

感谢罗尼·普芬施密特、大卫·伯恩斯、杰夫·唐纳、丹尼尔·诺里、阿尔弗雷多·德扎以及所有提供反馈或发送错误报告的人。

最好的,霍尔格·克里克

不相容性说明

虽然测试套件应该保持不变,但您可能需要升级插件:

  • 您需要一个新版本的pytest xdist插件(1.7)来分发测试运行。

  • 如果其他插件实现 pytest_runtest_logreport 钩子现在被无条件地调用,用于测试的设置/拆卸夹具阶段。您可以选择通过插入“if rep.when!”来忽略设置/拆卸失败。=“call”:返回“或类似的内容。请注意,大多数代码可能“只是”工作,因为已经调用了钩子来失败测试的安装/拆卸阶段,所以插件应该已经准备好搜索这样的报告了。

2.1.3和2.2.0之间的变化

  • 修复问题90:引入对测试项的热切分解,以便更早地调用TearDown函数。

  • 添加一个功能强大的metafunc.parameterize函数,该函数允许在多个步骤中参数化测试函数参数,因此可以从独立的插件和位置进行参数化。

  • 添加@pytest.mark.parameterize helper,可以轻松调用具有不同参数值的测试函数。

  • 向“参数化”示例页面添加示例,包括测试场景的快速端口以及新的参数化函数和修饰器。

  • 引入“注册”pytest.mark.*“通过ini文件或通过插件挂钩的帮助程序。还引入一个“--strict”选项,该选项将未注册的标记视为错误,从而避免键入错误,并为测试套件维护一组描述良好的标记。参见示例http://pytest.org/en/stable/mark.html以及它的联系。

  • 问题50:引入“-m marker”选项以基于标记选择测试(这是更严格和更可预测的“-k”版本,因为“-m”只匹配完整的标记,并且对和/或语义有更明显的规则。

  • 帮助优化测试速度的新功能:--durations=n选项,用于显示n个最慢的测试调用和安装/拆卸方法。

  • 修复问题87:--Pastebin现在与python3一起使用

  • 修复问题89:--在doctest工作中出现意外异常的pdb更加敏感。

  • 修复并清理Pytest自己的测试套件以防FDS泄漏

  • 修正问题83:链接到生成的功能列表

  • 修正问题74:Pyarg模块名现在根据imp.find_模块误报进行检查

  • 修复与Twisted/Trial-11.1.0用例的兼容性