1.用例重运行
在web自动化测试用例运行中,经常会因为网络或页面不稳定导致用例运行失败,所以我们需要把这些运行失败的用例重新运行,用例运行成功的用例就不需要重新运行了
重运行功能只有pytest框架有,unittest框架中是没有此功能的,在使用此功能前需要先进行安装,因为是python的第三方库,pip install pytest-rerunfailures
具体用法如下:
测试用例代码如下:
def test_1():
assert 1 == 1
def test_2():
assert 1 == 2
运行pytest --reruns 2 命令:2的意思是失败的用例重新运行2次,总共就是2条测试用例共运行4=1+1+2次,因为失败的用例会运行2次
重运行可以和用例筛选一块使用,只把运行失败的用例筛选出来进行重运行
import pytest
def test_1():
assert 1 == 1
@pytest.mark.failed
def test_2():
assert 1 == 2
方法一:命令行运行
方法二:代码运行,运行run.py
import pytest
pytest.main(['-m', 'failed', '--alluredir=output', '--reruns', '2'])
2.并发运行
这时所谓的并发不是性能测试,主要是解决web自动化测试用例执行速度慢,并发执行的意思是我同时可以执行多条用例
这时用到的就是pytest框架中的pytest-xdist,同样使用前需要先安装,也是第三方库
执行安装命令:pip install pytest-xdist
并发运行命令:pytest -n 4 (4(worker)的意思就是同时执行4条用例)
注意:使用并发执行时,用例和用例之间不能有依赖关系
因为有依赖关系的话,容易出问题,当依赖的用例1还没执行完,用例2已经执行了,没有拿到用例1提供的数据就会出错
如下:
第一次我没有执行并发运行,运行了6条用例,时间用时:59.51s
第二次我执行并发运行,开了2个worker,运行了6条用例,时间用时:40.22s
第二次我执行并发运行,开了4个worker,运行了6条用例,时间用时:45.10s
开多少个worker合适:
- worker数量不是越多越好
- 通常就是电脑的核数是几,就开多少个worker
总结:从上面的例子可以看出,使用并发运行的速度还是比不使用并发运行要快,但也没有想象中的快很多,影响的原因有很多,网络、电脑配置都有关系,所以具体开多少个worker要根据综合情况来确定