当前位置: 首页 > news >正文

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

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

安装:


pip install pytest-xdistpip install pytest-repeat

使用案例:main.py


import osimport pytestif __name__ == "__main__":# step-1:use pytest run test_casepytest.main(["-s", "test_case", '-n', 'auto', "--alluredir", "./report"])# step-2:auto report json data,zip to allure-htmlos.system("allure serve report")

test_case/test_demo.py


import timeimport unittestclass 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


import timeimport pytestclass 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


import timeimport pytest@pytest.mark.serialclass 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


# pytest.ini[pytest]markers =serial: mark test to run serially

运行结果:

注意事项:

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

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

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

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

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

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

http://www.lryc.cn/news/356511.html

相关文章:

  • 前端项目上线
  • redis基本数据结构与应用
  • Python pands使用引擎实现excel条件格式
  • 基于 vuestic-ui 实战教程 - 登录篇
  • SAPUI5基础知识2 - 手动创建一个SAPUI5的项目
  • 设计模式--访问者模式
  • onnx模型转换到rknn脚本
  • 防御恶意爬虫攻击
  • 【自动驾驶技术栈学习】2-软件《大话自动驾驶》| 综述要点总结 by.Akaxi
  • SRS视频服务器应用研究
  • 没有括号的字符串四则运算
  • vue2 $set 后期添加响应式数据的问题,使用vm.$set()
  • 笔记-X86下用Docker运行ARM64编译Libreoffice
  • 力扣:92. 反转链表 II(Java)
  • [less配置]vue2引入less
  • 物理内存与虚拟内存的区别
  • MySQL数据库案例实战教程:数据类型、语法与高级查询详解
  • 操作系统——用户态与内核态、同步与异步、阻塞与阻塞
  • C# VSTO读取Excel单元格Value、Value2
  • 如何快速从手动测试转向自动化测试
  • 【Linux+Docker】修改Docker容器中的hosts文件
  • 在VS Code中进行Java的单元测试
  • 国内信创web中间件生态
  • CSS中的writing-mode属性:解锁文本布局新维度
  • SQL面试题练习 —— 波峰波谷
  • 检索模型预训练方法:RetroMAE
  • OpenHarmony实战开发——宿舍全屋智能开发指南
  • 等了10年,终于迎来RTX5/RTX4全家桶开源,开源,开源! 且免费商用
  • Python 读取.shp文件并生成图幅编号
  • 【算法】位运算算法——判断字符是否唯一