pytest的一些实用插件实践

1.多重校验 pytest-assume

简单的校验assert,虽然可以写多个assert

    def test_add1(self): assert add(2,3)==5 assert add(1,3)==3 assert add(2,5)==7 

由于第二个断言失败,那么下面的断言就不会执行。
所以如果需要多个断言,都执行就需要第三方插件 pytest-assume
安装命令:

pip install pytest-assume

示例:

    def test_add2(self): pytest.assume(add(1,2)==3) pytest.assume(add(1,4)==3) pytest.assume(add(2,2)==4) 

这边即使第二个断言失败了,第三个断言还是会继续执行。

 

2.设定执行顺序 pytest-ordering

对于一些上下文依赖的,有时候可能需要设定一些特定执行顺序,pytest的ordering插件,就很好的解决了这个问题
安装命令

pip  install  pytest-ordering

示例脚本如下:

def test_order1(): print ("first test") assert True def test_order2(): print ("second test") assert True 

没有加上ordering,执行顺序是 test_order1----test_order2,如图:

 

 
before.png

加上顺序之后

@pytest.mark.run(order=2) def test_order1(): print ("first test") assert True @pytest.mark.run(order=1) def test_order2(): print ("second test") assert True 

结果如下:

 

 
after.png
5.失败重跑 pytest-rerunfailures

失败用例重跑,个人觉得这个是非常实用的插件。
举个例子:
在做UI自动化,如selenuim或者appium时,遇到某些元素未能及时显示,导致点击失败,如果加上重跑,那么将有效提高报告的准确性。
安装命令:

pip install pytest-rerunfailures 

示例脚本

class TestRerun(): @pytest.mark.run(order=2) @pytest.mark.flaky(reruns=5) def test_random(self): print(1) pytest.assume((random.randint(0,4)+3)==5) @pytest.mark.run(order=3) def test_random2(self): ''' 不加mark 命令行中 pytest -sq demo_rerun.py --reruns 5 :return: ''' print(2) pytest.assume((random.randint(0,4)+3)==5) @pytest.mark.run(order=1) @pytest.mark.flaky(reruns=6, reruns_delay=2) def test_example(self): print(3) assert random.choice([True, False])

执行命令:

pytest -sq demo_rerun.py --reruns 5
pytest -sq demo_rerun.py --reruns 5  --reruns-delay 1

二者的区别是,下面在每次重跑之前会等待 1 s
同时也可以在脚本中指定定义重跑的次数,这个时候在运行的时候,就无需加上 --reruns 这个参数

@pytest.mark.flaky(reruns=6, reruns_delay=2) def test_example(self): print(3) assert random.choice([True, False]) 
 

对比可以看出,执行顺序发生了变化

转载于:https://www.cnblogs.com/peng-lan/p/11511569.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值