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用例的兼容性