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)
pytest文档27-pytest分布式执行(pytest-xdist)