系列分享
Pytest系列(一)初次了解
Pytest(二)执行规则以及编写执行多条用例
Pytest(三)Pytest执行命令
Pytest(四)Pytest断言
Pytest(五)标记函数
Pytest(六)跳过测试
Pytest(七) pytest之参数化
Pytest(八) pytest Fixture(一)
Pytest(九) pytest Fixture(二)
Pytest(十) pytest Fixture(三)
Pytest(十一) pytest ini文件
Pytest(十二) Pytest产生测试报告
Pytest(十三)durations统计用例运行时间
Pytest(十四)用例执行顺序
Pytest(十五)重试机制
在用例执行的过程中,想要用多进程并发执行测试用例,如何实现呢,其实很简单,pytest有对应的模块,安装方式
代码语言:javascript复制 pip install pytest-xdist
安装成功后如下
如何使用呢?
代码语言:javascript复制pytest test_11.py -n 2 -s
结果
那么还可以跟什么参数呢?
-n 2 表示以两个进程的方式并行执行自动化测试用例,默认以用例层面进行分配(用例之间不能有依赖关系)
-n auto 按照cpu核数自动生成多个进程
--dist=loadfile 改变分布式执行用例时的分配模式,按照测试文件进行分配(测试文件之间不能有依赖关系)
--dist=loadscope 按照模块分配(测试模块之间不能有依赖关系)
当使用-n auto 我们可以看到
会自动划分。
有一个问题,多进程执行执行效率有什么影响吗?可以看下
代码语言:javascript复制def test_api():
time.sleep(1)
assert 2 == 2
def test_api1():
time.sleep(1)
assert 2 == 2
def test_api3():
time.sleep(1)
assert 2 == 2
def test_api4():
time.sleep(1)
assert 2 == 2def test_api():
time.sleep(1)
用并发执行的结果
不用并发执行结果如下
可以看到,执行差了2倍,但是也并不是所有的都能有提升的。
在执行的时候,如果有依赖的时候,在选择并行的时候,一定要注意下避免数据的依赖下的case之间的执行。
另外还有一个方面要注意,看下演示的代码
代码语言:javascript复制
@pytest.mark.skipif(2==2,reason='2==2')
def test_api():
time.sleep(1)
assert 2 == 2
@pytest.mark.skipif(2==2,reason='2==2')
def test_api1():
time.sleep(1)
assert 2 == 2
def test_api3():
time.sleep(1)
assert 2 == 2
def test_api4():
time.sleep(1)
assert 2 == 2
选择并发执行看下:
网上资料有说:xdist和skipif方法不兼容。经过测试,互相存在下执行可以正常进行,用的pytest版本。大家在看到学习资料后,一定要用自己的版本测试下。