首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

pytest的内置插件盘点26. stepwise | 为pytest提供【渐增式测试】的能力

本文系《pytest源码剖析》系列内容

26. stepwise

插件路径:_pytest.stepwise

实现的 hook

调用的 hook

pytest_deselected

定义 fixture

插件功能

创建命令行参数--sw

创建命令行参数--sw-skip

创建子插件stepwiseplugin

代码片段

@pytest.hookimpldef pytest_configure(config: Config) -> None: if config.option.stepwise_skip: # allow --stepwise-skip to work on it's own merits. config.option.stepwise = True if config.getoption("stepwise"): config.pluginmanager.register(StepwisePlugin(config), "stepwiseplugin")

class StepwisePlugin: self.session.shouldstop = ( "Test failed, continuing from this test next run." )

传递参数--sw-skip,等同强制传参--sw

传递参数--sw会注册插件stepwiseplugin

通过给session.shouldstop赋值,可使 pytest 停止运行

简评

这好像是个漏网之鱼。。。

它创建了一个子插件,默认不启用,所以脚本没有识别到

子插件代码量不多,就不给他新建一个小节了,

...

传参--sw后,插件会注册插件stepwiseplugin

这个插件主要做了两件事:

用例失败时,记下用例的序号,然后退出 pytest

下次启动时,把序号前的用例全部取消选中,只执行后面的(含失败的)用例

...

传参--sw-skip后,插件stepwiseplugin会给多一次机会:

第一次用例失败时,消耗 skip 机会(只有 1 次),继续执行

第二次用例失败时,记下用例的序号,然后退出 pytest

下次启动时,把序号前的用例全部取消选中,只执行后面的(含失败的)用例

实质上,下次启动时,跳过了第一个失败的用例,从第二个用例开始执行

再下次启动时,跳过了第二个失败的用例,从第三个用例开始执行

其好处是:可以不必卡在某一个失败的用例停滞不前

有了 skip 失败的机会,只需要不断不断地启动 pytest,就可以执行完全部的用例

...

传参--sw-skip启动 pytest 多次,效果等同于不传任何参数启动 pytest

选中哪一种方式启动,取决于你希望在什么时候得到用例的失败原因:

--sw-skip:每一次失败时马上显示

无参数:全部用例执行完毕后,才会统一显示

...

自此,已经在 pytest 中见到了多种测试方法:

全量测试:默认

选择性测试:-m

冒烟测试:-x

渐增式测试:--sw

后续还会看到:

回归测试:-lf

增量测试:-nf

加上第三方插件,会更多:

并发测试:-n

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O7gsjkjhbXfunr9Q_HdK5zXw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券