Pytest用例自定义 - 重复、并行、串行

简介: 面对快速迭代和持续交付的需求,提高测试效率变得至关重要。并行测试因其显著的时间节省优势而备受青睐。然而,并非所有测试都适合并行执行。在某些情况下,串行执行是必要的,以确保测试的正确性和稳定性。本文将探讨在自动化测试中部分串行、部分并行执行的必要性和实践方法,帮助测试开发者在提高测试效率的同时,确保测试结果的可靠性和准确性。

安装:

python 复制代码
pip install pytest-xdist

pip install pytest-repeat

使用案例:main.py

python 复制代码
import os

import pytest


if __name__ == "__main__":

# step-1:use pytest run test_case

pytest.main(["-s", "test_case", '-n', 'auto', "--alluredir", "./report"])


# step-2:auto report json data,zip to allure-html

os.system("allure serve report")

test_case/test_demo.py

python 复制代码
import time

import unittest



class TestDemo(unittest.TestCase):

def test_01(self):

time.sleep(5)

print('测试用例1执行')


def test_02(self):

time.sleep(5)

print('测试用例2执行')


def test_03(self):

time.sleep(5)

print('测试用例3执行')

test_case/test_parallel.py

python 复制代码
import time

import pytest



class TestParallel:

@pytest.mark.repeat(2)

def test_parallel_1(self):

time.sleep(5)

print("Parallel Test 1")


@pytest.mark.repeat(3)

def test_parallel_2(self):

time.sleep(5)

print("Parallel Test 2")


@pytest.mark.repeat(1)

def test_parallel_3(self):

time.sleep(5)

print("Parallel Test 3")


@pytest.mark.repeat(3)

def test_parallel_4(self):

time.sleep(5)

print("Parallel Test 4")

test_case/test_serial.py

python 复制代码
import time

import pytest



@pytest.mark.serial

class TestSerial:

def test_serial_1(self):

time.sleep(5)

print("Serial Test 1")


def test_serial_2(self):

time.sleep(5)

print("Serial Test 2")

配置文件:pytest.ini

python 复制代码
# pytest.ini

[pytest]

markers =

serial: mark test to run serially

运行结果:

注意事项:

1、同一文件中混合串行和并行测试,并且需要更精细的控制,可能需要编写更复杂的自定义逻辑或查找是否有现成的插件能满足这种特定的需求。

2、不关心执行顺序,简单地将 -n 参数设置为 auto,让 pytest-xdist 插件自动管理并行执行,通常是最简单也是最有效的方法。

**结论:**适当拆分错开并行和串行的测试类,通过pytest-xdist auto参数,可以便捷有效的大幅度提升运行测试用例的效率。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
B站_计算机毕业设计之家2 分钟前
豆瓣电影推荐系统 | Python Django Echarts构建个性化影视推荐平台 大数据 毕业设计源码 (建议收藏)✅
大数据·python·机器学习·django·毕业设计·echarts·推荐算法
MSTcheng.4 分钟前
【C++】C++11新特性(二)
java·开发语言·c++·c++11
晓13136 分钟前
第七章 【C语言篇:文件】 文件全面解析
linux·c语言·开发语言
愚者游世6 分钟前
Delegating Constructor(委托构造函数)各版本异同
开发语言·c++·程序人生·面试·改行学it
小镇敲码人8 分钟前
探索华为CANN框架中的ACL仓库
c++·python·华为·acl·cann
KIKIiiiiiiii8 分钟前
微信个人号API二次开发中的解决经验
java·人工智能·python·微信
梵刹古音9 分钟前
【C语言】 指针基础与定义
c语言·开发语言·算法
ZH154558913110 分钟前
Flutter for OpenHarmony Python学习助手实战:Web开发框架应用的实现
python·学习·flutter
Ekehlaft12 分钟前
这款国产 AI,让 Python 小白也能玩转编程
开发语言·人工智能·python·ai·aipy
rit843249915 分钟前
MATLAB中Teager能量算子提取与解调信号的实现
开发语言·matlab