前言
- 本篇来学习下在pytest中分布式执行测试用例,以节省测试时间。
安装插件
pip install pytest-xdist
分布式用例设计原则
- 用例之间是独立的,用例之间没有依赖关系,用例可以完全独立运行【独立运行】
- 用例执行没有顺序,随机顺序都能正常执行【随机执行】
- 每个用例都能重复运行,运行结果不会影响其他用例【不影响其他用例】
使用示例
- 顺序执行
# -*- coding: utf-8 -*-
# @Time : 2022/11/26
# @Author : 大海
import time
import pytest
def test_01():
print('case 1')
time.sleep(2)
assert 1 == 1
def test_02():
print('case 2')
time.sleep(2)
assert 1 == 1
def test_03():
print('case 3')
time.sleep(2)
assert 1 == 1
def test_04():
print('case 4')
time.sleep(2)
assert 1 == 1
def test_05():
print('case 5')
time.sleep(2)
assert 1 == 1
if __name__ == '__main__':
# 顺序执行
pytest.main(['-s', 'test_78.py'])
- 并行执行:加-n参数后面数字是并行数
# -*- coding: utf-8 -*-
# @Time : 2022/11/26
# @Author : 大海
import time
import pytest
def test_01():
print('case 1')
time.sleep(2)
assert 1 == 1
def test_02():
print('case 2')
time.sleep(2)
assert 1 == 1
def test_03():
print('case 3')
time.sleep(2)
assert 1 == 1
def test_04():
print('case 4')
time.sleep(2)
assert 1 == 1
def test_05():
print('case 5')
time.sleep(2)
assert 1 == 1
if __name__ == '__main__':
# 并行执行 加-n参数后面数字是并行数
pytest.main(['-s', 'test_78.py', '-n=4', '--html=report.html', '--self-contained-html'])
测试报告
按一定顺序执行
- pytest-xdist默认是无序执行的,可以通过 --dist 参数来控制顺序
-
–dist=loadscope
将按照同一个模块module下的函数和同一个测试类class下的方法来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例在同一个进程中执行
-
–dist=loadfile
按照同一个文件名来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例在同一个进程中执行
-