zoukankan      html  css  js  c++  java
  • 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中进行分布式执行,大大的降低了我们执行用例的测试时间。加快了我们的执行效率。

  • 相关阅读:
    Shiro 学习笔记(Realm)
    Shiro 学习笔记(Authentication)
    Shiro 学习笔记(基本结构)
    POI 示例(导入,导出)
    SpringBoot 整合POI
    解决使用drf-haystack报错ImportError: cannot import name get_count
    python实现冒泡排序和插入排序
    九大排序算法总结(转)
    Djaong 数据库查询
    django session 和cookie的设置,获取和删除
  • 原文地址:https://www.cnblogs.com/qican/p/14518564.html
Copyright © 2011-2022 走看看