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

Posted 测试-安静

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中进行分布式执行,大大的降低了我们执行用例的测试时间。加快了我们的执行效率。

以上是关于pytest---分布式执行用例(pytest-xdist)的主要内容,如果未能解决你的问题,请参考以下文章

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

pytest-27-pytest分布式执行(pytest-xdist)

46-pytest-分布式插件pytest-xdist使用

pytest文档27-pytest分布式执行(pytest-xdist)

Python测试框架pytest(22)插件 - pytest-xdist(分布式执行)

4.一些其他的特色运行