pytest---分布式执行用例(pytest-xdist)

前言

  当我们将所有的自动化测试用例都编写完成后,进行执行时,由于case较多,导致执行速度比较慢,那么有没有什么办法可以加快执行时间呢?有的人会说,可以用多进程,不错,确实可以使用多进程,这里安静介绍一个pytest的插件可以用来做分布式执行 pytest-xdist 

pytest-xdist

pytest-xdist插件表示在测试过程中可以使我们的测试用例一起并行测试,运行情况是根据你运行环境存在多个CPU,运行过程中可以进行组合测试运行, 从而加快我们的测试时间。

官方地址:https://pypi.org/project/pytest-xdist/

安装: pip install pytest-xdist 

查看是否安装成功: pip show pytest-xdist 

当然如果使用pytest-xdist需要对编写测试用例一些要求:

  • 每一条用例必须保持独立性。什么意思呢?就是每条用例不能互相影响其他的用例。
  • 每一条用例没有特定的执行顺序,就是每条用例都要遵循随机执行
  • 每条用例的测试结果不能影响到其他的测试用例。

使用方法:

pytest -n  x  
# n :表示 使用并行参数
# x:表示需要启动多少个分布式

使用方法

安静这里先简单的写一条用例,为了统一后续的时间,显示出来我们的测试时间缩短,在每条用例下都强制等待了2秒

import pytest
import time

class TestCase:
    def test_01(self):
        time.sleep(2)
        print('---测试用例01---')

    def test_02(self):
        time.sleep(2)
        print('---测试用例02---')

    def test_03(self):
        time.sleep(2)
        print('---测试用例03---')

    def test_04(self):
        time.sleep(2)
        print('---测试用例04---')

if __name__ == '__main__':
    pytest.main(['-vs'])

通过执行发现测试这4条case一共用了大概8.07秒

 

那么当我们使用pytest-xdist的方法进行执行看到这里启动了2个并行分别是GW1和GW0。运行时间为5.07s相当于缩短了3秒钟

这里安静只是列举了2个线程的参数,那么如果我想把我电脑最大的支持的cpu线程都用上怎么操作呢?

这里可以通过使用auto的参数进行,就是将启动的线程数直接更改成auto

使用方法: pytest -vs -n auto 

调试代码

当我们在使用分布式方法的时候,分布式给我们提供了一个方法可以对其修改的代码时,该方法会自动监听你的代码修改,如果你的代码有错误,你修改之后保存,他便会自动再运行一遍测试,如果你运行后的结果没有失败或者错误,你可能需要手动停止测试。这个方法就是 --looponfail 

这里安静还是通过上面的代码,我们在用例04中加入错误的断言,然后加上参数--looponfail。 pytest -n 2 --looponfail 

通过上述代码直接发现,展示出来了我们错误的测试用例,已经最后显示等待修改代码,这里我们自行进行修改代码。然后就会发现,自动执行了我们新修改的内容。当我们完成代码后,可以自行退出。

好了,简单的总结了如果在pytest中进行分布式执行,大大的降低了我们执行用例的测试时间。加快了我们的执行效率。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值