pytest测试框架pytest-xdist插件并发执行测试用例

2024-06-23 11:52

本文主要是介绍pytest测试框架pytest-xdist插件并发执行测试用例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Pytest提供了丰富的插件来扩展其功能,本章介绍下插件pytest-xdist,主要是提供并行测试、分布式测试、循环测试等功能,可以加快测试速度。

pytest-xdist官方显示没有严格的python和pytest版本限制。

pytest-xdist安装

使用pip命令安装: pip install pytest-xdist (安装在pytest工程所运行的python环境,python的安装目录或者虚拟环境目录,可以参考之前文章查看pycharm配置pytest运行环境)

通过pycharm安装:打开设置,按照如下图中安装插件(windows系统)

pytest-xdist运行

执行时添加参数-n

  • 指定执行的并发数:-n 4,表示4个并发
  • 自动检测 CPU 的核心数并启动相应数量的进程,可以使用:-n auto

举例:测试文件有18个测试用例,每个测试用例通过time.sleep(1)沉睡1s

1)不填加-n参数执行

我们通过cmd窗口执行用例:

pytest.exe -v C:/Users/wsybb520/PycharmProjects/pytestProject2/test_dir1/test_case3.py

执行后结果显示18s完成

2) 添加参数-n auto通过多进程执行

pytest.exe -v -n auto C:/Users/wsybb520/PycharmProjects/pytestProject2/test_dir1/test_case3.py

执行结果如下图,显示4个workers 执行18个用例,用时7.27s,但是用例执行顺序也会被打乱。

通过以上示例可以看出并发执行会减少执行时间,提升测试效率,尤其用例很多的时候更加明显。

配合pytest-html插件生成测试报告,测试报告打开如下

pytest.exe -v -n auto --html=report.html C:/Users/wsybb520/PycharmProjects/pytestProject2/test_dir1/test_case3.py

执行时添加参数--dist

--dist参数用于控制测试用例的执行顺序和分组方式。

l --dist=load (默认) :将待处理的测试发送给任何可用的工作器,不保证任何顺序。

l --dist=loadscope:按照模块(module)和测试类(class)来分组,确保同一个组的测试用例在同一进程中执行。

l --dist=loadfile:按照文件名来分组,确保同一个文件中的测试用例在同一进程中执行。

l --dist=loadgroup:按照 xdist_group 标记分组。之前我们文章介绍使用@pytest.mark可自定义标记,此时使用@pytest.mark.xdist_group做标记,被标记的将分在同一个执行器执行。

举例:添加参数--dist=loadscope

测试文件函数级测试用例5个,测试类中测试用例18个,每个测试用例都使用time.sleep(1)沉睡1s,

预期结果:使用2个进程,添加参数时,因为测试类级用例要分在一个执行器中,整体大于18s;如果不带参数23条用例耗时肯定小于18s,在13s左右。

我们看结果:

添加执行参数--dist=loadscope,耗时时19.9s

不添加参数,耗时是13.7s

举例:添加参数--dist=loadgroup

测试文件函数级测试用例5个,测试类中测试用例18个,每个测试用例都使用time.sleep(1)沉睡1s,

预期结果使用2个进程,添加参数时,因为测试类级用例要分在一个执行器中,整体大于18s;如果不带参数23条用例耗时肯定小于18s,在13s左右。

我们看结果:

添加执行参数--dist=loadgroup,耗时时19.77s

pytest.exe -v -n 2 --dist=loadgroup --html=report/report.html C:/Users/wsybb520/PycharmProjects/pytestProject2/test_dir1/test_case6.py

不添加参数,耗时是13.61s

使用注意事项

因为多进程执行并且用例执行顺序会被打乱,因此大家使用时需要注意以下项目。

测试用例独立性:由于 pytest-xdist 并行执行测试用例,测试用例之间的顺序是不确定的。因此,如果测试用例之间需要共享数据或进行某种形式的同步操作,需要确保在使用 pytest-xdist 时正确处理这些情况。

并发和资源问题:并行执行测试用例可能会引发并发问题,如资源竞争、死锁,可能会占用大量的计算资源和内存。在设计测试用例时,要特别注意并发问题,并采取适当的措施来避免或解决这些问题。

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

---祝愿大家都能够龙腾虎跃,步步高升!!!

这篇关于pytest测试框架pytest-xdist插件并发执行测试用例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1087087

相关文章

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

maven中的maven-antrun-plugin插件示例详解

《maven中的maven-antrun-plugin插件示例详解》maven-antrun-plugin是Maven生态中一个强大的工具,尤其适合需要复用Ant脚本或实现复杂构建逻辑的场景... 目录1. 核心功能2. 典型使用场景3. 配置示例4. 关键配置项5. 优缺点分析6. 最佳实践7. 常见问题

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos