RobotFramework编写用例,在Jenkins上如何实现用例的并发运行?

news2024/11/16 23:30:06

我们了解RobotFramework编写自动化测试用例的方法,了解如何将用例在Jenkins上运行。

但是,随着用例的增多,传统的pybot/robot命令运行测试用例会耗费大量的时间,这就慢慢成为了一个苦恼的问题。

那么,在Jenkins上如何实现用例的并发运行呢?!

我们需要认识的是Jenkins只是一个持续集成的自动化工具,在Jenkins服务里,我们可以通过调用shell脚本或python脚本等的方式实现我们的用例运行。

通过RobotFramework要实现用例的并发运行,不得不提一下pabot库——RobotFramework测试并行执行器,可以将一个执行拆分为多个执行并节约测试执行时间。

pabot安装方法

在线安装方法:使用pip install -U robotframework-pabot 命令即可。

离线安装方法:通过https://github.com/mkorpela/pabot地址下载,安装压缩包,解压后,使用setup.py install命令即可。

pabot使用方法

1、参数列表

2、使用方法

基本使用方法,如:pabot --processsess 2 /home/robotframwork-test,使用2个并行执行/home/robotframework-test目录下的测试用例。

pabot使用场景模拟

1、如何多并发执行测试用例

这是我们选择使用pabot的最原始和基本需求,使用--processess参数即可满足,参考上述”基本使用方法”。

2、如何重复测试失败测试用例

在没有选择使用pabot之前,我们使用pybot运行用例时,可以使用--rerunfailed参数读取output.xml文件中失败的用例重新执行。命令如:pybot --rerunfailed ./output.xml。

当我们使用pabot并发运行之后,我们同样可以调用pybot的--rerunfailed参数,重新运行失败用例。参考命令如:pabot --processesses 2 pybot --rerunfailed /home/robotframework-test。

3)如何控制执行顺序

pabot默认通过pabotsuitenames文件控制执行序.pabotsuitenames文件结果如下图1所示。前4行为pabot运行时生成的相关信息,其后为运行的用例套件顺序。如果我们想控制用例执行顺序,可通过--odering [文件名]参数来控制,例如:pabot --ordering file,file为文件名。file里的内容前4行为空,从第5行开始编辑,格式如.pabotsuitenames。

图1 pabotsuitenames文件内容

图2 编辑的file文件内容

通过pabot –ordering file运行用例,可看到执行顺序如下图3所示(ID号表明执行顺序)。由下图可见,执行顺序于图2中指定的顺序一致。

 图3 指定file文件控制执行顺序

此外,还可以并添加#WAIT标志,等待前面的用例执行完后再执行#WAIT后的用例,参考格式如下图所示。

图4 #WAIT参数使用方法

4)如何使用非默认的pybot/robot启动命令

有的测试环境可能存在不止一个pybot/robot命令,例如:python2和 python3并存,且都安装了robotframework。环境默认使用python2语言。当使用pabot pybot/robot….时,默认使用的时python2的pybot/robot。那么如何使用python3的pybot/robot呢?

这个时候,使用--command [自定义 pybot/robot 命令] –end-command 即可满足我们的要求。例如:pabot --command python3 -m robot --end-command --processes 2。

4.总结

本文简单介绍了pabot的使用方法和一些使用场景。使用pabot可以提高我们robotframework测试用例的执行效率,但是指的注意的是:pabot是以测试套件为单位并行运行的。因此可能存在如果用例套件的用例分布不均(比如A套件100个用例,B套件10个用例),那么用例少的套件则会早早执行完,资源空置无法合理利用。这个时候就需要我们拆分用例套件或均匀化用例,提高执行效率和资源使用率。此外,用例并发更加关键的一点是要去除用例之间的耦合和相互依赖性,避免因为用例之间的顺序依赖导致用例运行失败。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  1. 文档获取方式:

  2. 加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1552077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis数据结构的基础插入操作

数据结构与内部编码 Redis常见的数据结构 数据结构和内部编码 数据结构的插入操作 在Redis中,数据结构的插入操作取决于你要插入的数据类型。以下是一些常见的数据结构和它们的插入操作: 字符串 (String):使用 SET 命令来插入字符串。例…

考研数学|武忠祥学习包搭配《660》和《880》

一、660、880、三大计算简单分析 660题 这本题册具有高难度、综合度和深度,属于高质量的题材。我建议不要在基础阶段就着手解决其中的660题,因为这可能会影响你的信心。相反,你可以在基础阶段完成一轮学习后,将这些题目留到强化…

Linux manim安装

简介 根据文档可知, manim目前分为两个版本, 一个是由3Blue1Brown维护更新的最新版本的manimgl, 另一个是稳定的社区版本manim or manimce. 两个版本在安装和使用上都有些不同, 不要搞混. Linux manim ERROR No package ‘pangocairo’ found Getting requirements to buil…

Spring-IoC-属性注入的注解实现

1、创建对象的注解 Component 用于声明Bean对象的注解,在类上添加该注解后,表示将该类创建对象的权限交给Spring容器。可以直接将这些类直接创建,使用的时候可以直接用。 注解的value属性用于指定bean的id值,value可以省略&…

电源噪声的起因及危害

对造成电源不稳定的根源进行简单分析如下,主要在于两个方面:一是器件高速开关状态下,瞬态的交变电流过大;二是电流回路上存在的电感。从表现形式上来看又可以分为三类:同步开关噪声(SSN),有时被称为Δi噪声,地弹(Ground bounce)现象也可归于此类(图1-a);非理想电…

HTTP状态 405 - 方法不允许

方法有问题。 用Post发的请求&#xff0c;然后用Put接收的。 大家也可以看看是不是有这种问题 <body><h1>HTTP状态 405 - 方法不允许</h1><hr class"line" /><p><b>类型</b> 状态报告</p><p><b>消息…

windwos权限维持

1.php 不死马权限维持 <?php ignore_user_abort(); //关掉浏览器&#xff0c;PHP脚本也可以继续执行. set_time_limit(0);//通过set_time_limit(0)可以让程序无限制的执行下去 $interval 5; // 每隔*秒运行 do { $filename test.php; if(file_exists($filename)) { echo…

Spring Integration 是什么?

Spring Integration 是什么&#xff1f; Spring Integration 在 Spring 家族不太有名气&#xff0c;如果不是有需求&#xff0c;一般也不会仔细去看。那么 Spring Integration 是什么呢&#xff1f;用官方的一句话来解释就是&#xff1a;它是一种轻量级消息传递模块&#xff0…

快速上手Spring Cloud 十四:璀璨物联网之路

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …

虚幻引擎资源加密方案解析

前段时间&#xff0c;全球游戏开发者大会(Game Developers Conference&#xff0c;简称GDC)在旧金山圆满落幕&#xff0c;会议提供了多份值得参考的数据报告。根据 GDC 调研数据&#xff0c;当下游戏市场中&#xff0c;Unreal Engine (下文简称虚幻)和 Unity 是使用最多的游戏引…

神奇的css radial-gradient

使用css radial-gradient属性&#xff0c;创造一个中间凹陷进去的形状。如下图 background: radial-gradient(circle at 50% -0.06rem, transparent 0.1rem, white 0) top left 100% no-repeat;

VLAN实验记录---对抗遗忘

sw1的接口6应该调成混杂模式&#xff0c;因为pc2,4,5,6的pvid各不相同而网段相同&#xff0c;所以往上去路由时应该剥离标记&#xff08;VLAN里面是标记而不是标签&#xff09;出去&#xff0c;这样 路由器上的物理接口用来管理不带标记的流量&#xff0c;而vlan2流量的往上打上…

Vue2(十一):脚手架配置代理、github案例、插槽

一、脚手架配置代理 1.回顾常用的ajax发送方式&#xff1a; &#xff08;1&#xff09;xhr 比较麻烦&#xff0c;不常用 &#xff08;2&#xff09;jQuery 核心是封装dom操作&#xff0c;所以也不常用 &#xff08;3&#xff09;axios 优势&#xff1a;体积小、是promis…

springboot检测脚本

import requests import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) session requests.session()# 从文本文件中读取 with open(dic.txt, r) as file:paths file.readlines()# 移除每个末尾的换行符 paths [path.strip() for path in pa…

【概率论与数理统计】Chapter2 随机变量及其分布

随机变量与分布函数 随机变量 随机变量&#xff1a;一个随机变量是对随机现象可能的结果的一种数学抽象 分布函数 分布函数&#xff1a; X为随机变量&#xff0c; F ( x ) F(x) F(x)定义为&#xff1a; F ( x ) P ( X ≤ x ) F(x) P(X \leq x) F(x)P(X≤x) 定义域&#…

项目四-图书管理系统

1.创建项目 流程与之前的项目一致&#xff0c;不再进行赘述。 2.需求定义 需求: 1. 登录: ⽤⼾输⼊账号,密码完成登录功能 2. 列表展⽰: 展⽰图书 3.前端界面测试 无法启动&#xff01;&#xff01;&#xff01;--->记得加入mysql相关操作记得在yml进行配置 配置后启动…

vue2高德地图选点

<template><el-dialog :title"!dataForm.id ? 新建 : isDetail ? 详情 : 编辑" :close-on-click-modal"false" :visible.sync"show" class"rv-dialog rv-dialog_center" lock-scroll width"74%" :before-close&q…

2024最新华为OD机试试题库全 -【二叉树计算】- C卷

1. 🌈题目详情 1.1 ⚠️题目 给出一个二叉树如下图所示: 请由该二叉树生成一个新的二叉树,它满足其树中的每个节点将包含原始树中的左子树和右子树的和。 左子树表示该节点左侧叶子节点为根节点的一颗新树;右子树表示该节点右侧叶子节点为根节点的一颗新树。 1.2 �…

电平输入检测-定时器输入捕获

目录 一&#xff0c;引入 二&#xff0c;具体结构 三&#xff0c;实现步骤 四&#xff0c;PWM输入模式 一&#xff0c;引入 上篇博客&#xff0c;我们对于定时器的计数核心——时基单元作了细致的了解。这篇博文&#xff0c;我们来介绍定时器的四大功能模块之一——输入捕获…

无忧微服务:如何实现大流量下新版本的发布自由

作者&#xff1a;项良、十眠 微服务上云门槛降低&#xff0c;用好微服务才是关键 据调研数据显示&#xff0c;约 70% 的生产故障是由变更引起的。在阿里云上的企业应用如茶百道、极氪汽车和来电等&#xff0c;他们是如何解决变更引起的稳定性风险&#xff0c;实现了在白天高流…