robotframework 多进程 多线程

本文介绍如何使用RobotFramework的Process库实现多进程并发执行测试案例,并通过Rebot工具合并测试结果,生成统一的测试报告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直想找个多进程执行rf case 的第三方库,都没找到。 这两天又上网找了找,从网上的两个回答里找到了灵感。 我们可以间接的达到这个目的。

参考答案:
使用Process Library 多进程,后台执行
https://stackoverflow.com/questions/25427506/robotframework-threads
http://robotframework.org/robotframework/latest/libraries/Process.html
RF 合并测试结果的工具 Rebot:
https://stackoverflow.com/questions/16519277/aggregate-the-reports-from-different-robot-testsuites

下面给出使用Process 的例子:
导入Process 库

这里写图片描述

使用多进程执行:
Start Process 代表后台执行,不用等待进程执行完成
Run Process 执行线程,需要等待进程执行完成

这里写图片描述
分析:
Start Process 执行的命令是,执行python 代码,等待100s
但是我们执行Process 的时候,并没有等待这个进程执行完
然后就执行了 Run Process 的进程,这个进程会打开计算器程序。
需要我们手动关闭计算机程序,Run Process 这个进程才会结束。

发散思维:
既然我们可以使用 Start Process 后台执行命令,那我们可以多起
几个后台进程,这个就相当于多进程执行了。
例如:

Start Process pybot -s suite1 -o xx/output1.xml D:/xxx/project
Start Process pybot -s suite2 -o xx/output2.xml D:/xxx/project
Start Process pybot -s suite3 -o xx/output3.xml D:/xxx/project
Start Process pybot -s suite4 -o xx/output4.xml D:/xxx/project

这里就相当于后台执行project 的4个测试套件,然后我们会得到四个output?.xml 输出文件
OK, 这个时候我们合并输出结果的命令就可以派上用场了
这个命令还有其他参数,详细使用命令可以在cmd窗口使用命令查看:
rebot –help

python -m robot.rebot outputs/*.xml -r report/merge_report.html

最后得到的merge_report.html 就是我们合并后的最终测试报告
理论上可行,但还是实践一下最好:
我们新建一个空文件夹
这里写图片描述

再看看我们的case:
一共有3个case, 我们利用 process 去多进程执行 另外两个case
并把两个进程生成的测试结果合并生成一个测试报告

这里写图片描述

start process   pybot.bat   -t  exec_script -o  D:/Document/outputs/opt1.xml    D:/Document/GitProject/auto-unix/unix.txt   alias=case1
start process   pybot.bat   -t  test_remote -o  D:/Document/outputs/opt2.xml    D:/Document/GitProject/auto-unix/unix.txt   alias=case2
wait for process    case1                       
wait for process    case2                       
Run Process python  -m  robot.rebot -d  D:/Document/outputs -R  D:/Document/outputs/*.xml

最后跑一下,看看我们的结果:
注意哦,里面加了两个进程的等待
我们要等所有进程结束,才能合并生成完整的测试报告

这里写图片描述

最后看一下我们的报告:

这里写图片描述

日志:
这里写图片描述

没毛病~
那么我们就可以实现多进程去并行执行case 了

使⽤ 使⽤pabot并⾏执⾏ 并⾏执⾏robotframework⽤例 ⽤例 主要观点:使⽤pabot并⾏运⾏robotframework,可以解决:robotframework执⾏案例时间长的问题 解决执⾏案例时间长的⽅案: 解决执⾏案例时间长的⽅案: ⽬的: ⽬的: 缩短案例的运⾏时间 两种⽅法: 两种⽅法:      1. 将⼤的项⽬分成⼏个⼦模块,测试案例也是分为⼏个⼦模块,这样进⾏分布式测试 2. 在⼀台机⼦上开启多个进程进⾏测试 解决⽅案: 解决⽅案: 使⽤ 使⽤pabot类库: 类库: pabot 通过开启多个进程以Suite为单位并⾏运⾏robotframework测试案例,并且对于进程之间资源共享的问题也有锁机制。 安装: 安装: pip install robotframework-pabot pabot命令⾏参数: 命令⾏参数: --processes [NUMBER OF PROCESSES] ——> 并⾏的线程数(最⼤是机器CPU的数⽬) --pabotlib启动PabotLib远程服务器。这⽀持在并⾏测试执⾏之间进⾏锁定和资源分配。 --pabotlibhost [HOSTNAME] ——> 远程服务器的主机名(默认是127.0.0.1) --pabotlibport [PORT] ——> PabotLib远程服务器端⼝号(默认为8270) --resourcefile [FILEPATH]可以包含⽤于分配资源的共享变量的⽂件的指⽰符。这需要与pabotlib选项⼀起使⽤。 实际测试: 实际测试: 这⾥新建⼀个pabotdemo⽂件夹,下⾯包含有3个测试⽤例⽂件(即:3个Suite),每个⽂件中包含有3个Test(即:3个测试⽤ 例)。每个测试⽤例都是执⾏相同的步骤sleep 10s。如果在RF中运⾏9个Test,每个Test耗时10s,那就需要90s。 下图为在 下图为在RF中运⾏的测试结果: 中运⾏的测试结果: 使⽤ 使⽤pabot开启 开启2个进程: 个进程:pabot --processes 2 PabotDemo,耗时: ,耗时:63s 使⽤ 使⽤pabot开启 开启3个进程: 个进程:pabot --processes 2 PabotDemo,耗时: ,耗时:32s 上⾯简单测试,没有进程间的资源共享,所以没加锁,具体使⽤可以参考: 注意:Pabot并⾏运⾏是以Suite为单位运⾏的,因为项⽬的案例结构有的Suite中案例个数100多个,有的只有⼏个,这样就导致案 例少的Suite⼏个可能已经运⾏完了,案例多的Suite可能才刚开始,并不能发挥并⾏运⾏的最⼤效果,分布不均,所以需要对案例 进⾏调整,将案例多的Suite进⾏拆分,这样也能开启多个进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值