利用 jenkins 关联 Job 方式完善 RobotFramework 测试 Setup 以及 Teardown 后操作

目录

1.前言

2.Jekins 关联 Job 方式


1.前言

Jenkins是一个流行的持续集成和交付工具,它可以帮助自动化构建、测试和部署软件。与Robot Framework结合使用,可以实现更高效的测试工作流程。

在Robot Framework中,Setup和Teardown是测试用例中的两个重要部分。Setup用于准备测试环境和数据,而Teardown用于清理测试环境和数据。通过与Jenkins的关联,可以在测试执行前后执行一些额外的操作,以进一步完善测试流程。

一种常见的做法是使用Jenkins的"Pre-build"和"Post-build"操作来关联Robot Framework的Setup和Teardown。在"Pre-build"操作中,可以执行一些准备工作,例如启动应用程序、配置测试环境等。在"Post-build"操作中,可以执行一些清理工作,例如关闭应用程序、清理测试数据等。

2.Jekins 关联 Job 方式

这个都说到烂了,就不再多说了,就说我遇到的问题,我这里自动化测试其实有几个过程,其实是走持续集成的方法 (可能只是看起来而已),就是从收到开发代码 build 成功的 hook 开始,触发测试环境获取新的安装包部署,检查部署是否成功,执行自动化测试,输出测试报告发送邮件或其他通知方式,过程大概是这样

(1) 说明一下那个测试通知和邮件报告的,因为有一个通知方式是直接接入到我们项目的(通讯工具),所以这里就补充了一下,说到这里有人会想到,自动化测试这一块可以直接放到 RobotFramework(以下简称 RF),但更新测试环境和发送通知和邮件测试报告这些模块如果直接放到 RF 的 Setup 和 Teardown 显然会有些鸡肋,毕竟想让自动化测试的执行过程更加独立,而且更好地控制整个流程,一开始我也想不到什么好方法,后面某天突然脑袋一闪想起 Jenkins 是有关联 Job 的功能,一切解决了,后面就开始我上图的设计了

(2) Jenkins 的 Job 可以如下图这么分

a、第一执行的 Job 是更新测试版本的 Job,这个 Job 是通过收到开发代码 build 成功的通知之后自动触发的,具体怎么触发用过 jenkins 的小伙伴都应该知道,就不多说了,获取了新包之后就会更新部署测试环境,在此之前测试环境会清理一遍环境,更新完成之后检查是否更新版本成功,目前我自己设置的检查点可能还有点简单,看新包是否有成功部署到测试环境,前端方面看是否能正常打开页面登录,后端方面调登录接口是否能正常登录返回正确数据,都通过的话,更新就算成功了,更新测试版本的 Job 构建为 stable 后就会触发执行自动化用例,如果更新失败就会发送更新失败的通知到相应负责人(一般就是我了=。=),然后就去检查测试环境情况,把环境等问题都弄 ok 了,再手工触发一下,所以要执行自动化测试的前提是测试环境新版本可以用啊,都不能用还怎么测呢

b、执行完自动化测试用例后,如果出现非 Stable 的情况,就会触发失败用例重跑的 Job,至于 RF 的失败用例重跑的方法,之前也有很多人问,在这里就说一下,在本地操作是这样的

要结合 Jenkins 的话只要能拿到对应的 output.xml 就能做到了,这里就不多说了,自己摸索试试,然后就可以将失败的用例重跑,一般也就重跑一次,都完成之后就触发发送测试完成通知的 Job,一般是执行用例的 JOB 为 Stable 或重跑用例的 JOB 完成后关联自动触发,主要是邮件测试报告和消息通知,说到邮件测试报告,RF 的测试报告有个坑就是报告源码里有 JS,邮件都不会支持 JS 的话,除非你想来 XSS,所以只能用别的方法了,说到这里先展示一下我自己做的邮件测试报告

  • 测试通过(第一期)

  • 测试失败的(今天优化了一下)

这个测试报告分 4 个模板,版本信息,测试基用例统计,跳转链接和失败的测试用例展示,版本信息是直接去测试环境取的,测试用例统计是通过调 jenkins 的 api 获得的,怎么获得,来到页面点一下这个你就明白了

在点点就会看到

这样子测试用例统计就能做了,然后第三模块就是那几个跳转到 jenkins 看测试报告和测试日志,最后的失败测试用例的获取是通过 python 爬虫实现的,就是把 job/3/robot 下 fail test 那里爬下来,自己作一下优化展示就好,就这样,邮件的一个比较基本的测试报告也完成了,整个自动化测试的过程大概就是这样子,现在在我们项目中每天都会跑一次来过每个 dev 版本的核心功能,这样一来把自动化测试过程的 Setup 和 Teardown 都很好地分离开来,也方便以后地扩展和维护

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(软件测试相关资料,自动化测试相关资料,技术问题答疑等等)

相信能使你更好的进步!

点击下方小卡片

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

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

相关文章

SQL语句GROUP BY、HAVING、EXISTS、SQL函数(Null判断、日期相关、计算数值和字符串操作 )

目录 GROUP BY HAVING EXISTS SQL函数 Null判断函数 日期数据类型及函数 计算数值和字符串操作函数 AVG(平均值) COUNT(数据条数) FIRST/LAST(第一条数据) MAX/MIN(最大值) SUM(列总和) UCASE/ LCASE (转换大小写) MID(截取字符串) LEN(字符值的长度) ROUND(数…

什么是70v转12v芯片?

问:什么是70v转12v芯片? 答:70v转12v芯片是一种电子器件,其功能是将输入电压范围在9v至100v之间的电源转换为稳定的12v输出电压。这种芯片通常被用于充电器、车载电池充电器和电源适配器等设备中。 问:这种芯片的最大…

如何在Microsoft Excel中使用SORT函数

虽然 Microsoft Excel 提供了一个内置的数据排序工具,但你可能更喜欢函数和公式的灵活性。 使用 SORT 函数的好处是,你可以在不同的位置对数据进行排序。如果你想在不干扰原始数据集的情况下操作项目,你会喜欢 Excel 中的 SORT 函数。但是,如果你喜欢对项目进行原位排序,…

ES(4)核心概念

文章目录 索引文档字段映射分片副本分配 索引 一个索引就是一个拥有积分相似特征的文档的集合。我们可以有客户数据的索引、产品目录的索引、订单数据的索引。 对我而言这个索引可能更像是表的概念 文档 一个文档是一个可被检索的最基本的单元,也就是一条数据&…

Spring AOP的介绍与实现

文章目录 Spring AOP1. Spring AOP概念2. Spring AOP的作用3.AOP的组成4. Spring AOP的实现4.1 添加Spring AOP依赖4.2 定义切面(创建切面类)4.3 定义切点(配置拦截规则)4.3.1 切点表达式语法 4.4 定义通知的实现 5. Spring AOP实…

STM32 Proteus仿真全自动洗衣机洗涤脱水-0074

STM32 Proteus仿真全自动洗衣机洗涤脱水-0074 Proteus仿真小实验: STM32 Proteus仿真全自动洗衣机洗涤脱水-0074 功能: 硬件组成:STM32F103R6单片机LCD1602显示器 L298N驱动电机正反转蜂鸣器LED指示灯多个按键(标准洗,快速洗&a…

STM32学习笔记(十二)丨RTC实时时钟

本篇文章包含的内容 一、计算机底层计时系统——时间戳1.1 时间戳简介1.2 GMT/UTC1.3 C语言和time.h库 二、STM32的BKP和RTC时钟2.1 BKP(Backup Registers)备份寄存器2.2 RTC(Real Time Clock)实时时钟2.2.1 RTC简介2.2.2 RTC的内…

javascript 导出表格的excel

一个php网站的表格,需要增加导出excel的功能, 因对web开发不甚了解,开始想着用php导出, 搜索一番发现比较复杂,而且我的表格里已经有数据了, 如果导出又要去库中获取一次,不是负担加倍, 可否把现有表格数据,直接导出来? 答案是肯定的,用js在前端导出 开源js组件…

opencv-07-感兴趣区域(ROI)

在图像处理过程中,我们可能会对图像的某一个特定区域感兴趣,该区域被称为感兴趣区 域(Region of Interest,ROI)。在设定感兴趣区域 ROI 后,就可以对该区域进行整体操作。 以下是一些 OpenCV ROI应用场景 …

Blender操作快捷键

视角操作 按住鼠标中键旋转视角 滚动滚轮视角推拉 shift中键 视角平移 其它操作 X 删除物体 I 插入关键帧 N 隐藏属性工具栏 小键盘0 进入摄像机视角 ~ 切换视角 ctrlAltQ 四视图 移动旋转缩放 • G 移动 • S 缩放 (AltS 沿法线方向缩放) • R 旋转 • G(XY…

centos环境搭建nsq单点

简言 下载 启动nsq(单节点) 1. 启动nsqd 2. 启动nsqlookupd 3. 启动nsqadmin 查看状态 简言 1. nsq是go语言实现的分布式消息处理平台,类似我们常用的kafka,rocket mq等,目的是用来大规模地处理每天数以十亿计级别的消息。它具有分布式和…

Java集合工具:列表查找之position和find

操作集合时&#xff0c;查找列表中的元素是常见操作&#xff0c;本文记录两个平常使用的List查找工具方法。 使用示例 Testpublic void testPositionAndFind() {List<Integer> list Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);//查找list中2的下标&#xff0c;不存…

如何用Jmeter做性能测试

目录 性能测试的概念 性能测试类型 性能测试应用场景&#xff08;领域&#xff09; 性能测试常用的指标 性能测试流程 需求分析 搭建测试环境 测试场景设计 测试用例设计和脚本开发 测试数据准备 性能测试执行和管理 性能测试结果分析与调优 测试报告和跟踪 性能测…

AtcoderABC244场

A - Last LetterA - Last Letter 题目大意 给定一个长度为N的字符串S&#xff0c;由小写英文字母组成&#xff0c;打印出S的最后一个字符。 思路分析 题目要求打印出字符串S的最后一个字符&#xff0c;可以直接通过访问S的最后一个元素来获取该字符。可以使用字符串的back()…

用Arthas快速定位线上JVM问题!

Arthas分析FullGC问题定位 对于FullGC那一定不会陌生,一般来说会采用横切FullGC前置拦截(-XX:+HeapDumpBeforeFullGC)和后置拦截(-XX:+HeapDumpAfterFullGC),导出FullGC发生前后的heap dump文件,以便于我们进行FullGC原因的分析和定位。 推测分析问题之FullGC的频率过高…

unity背景缓动动效

这算是一个很常见的小功能&#xff0c;比如我们在玩横版游戏的时候&#xff0c;背景动画会以一定的频率运动&#xff0c;其实现方式也有很多种。 比如&#xff0c;使用UGUI的imageanimtion动画的方式&#xff0c;自己k桢实现。 还可以使用材质球本身的功能来实现&#xff0c;关…

WPF 自定义控件完成库容表盘显示效果

先看一下显示效果&#xff1a; 需要注意的地方有以下几点&#xff1a; 表盘的刻度分部&#xff0c;长刻度和短刻度显示。在数值80W时&#xff0c;需要更改刻度盘的颜色渐变。在数值80W时&#xff0c;更改库容总数背景的显示&#xff0c;也是颜色渐变。刻度盘控件属性定义&…

HarmonyOS课程体验官招募(第四期),寻找乐于分享,精益求精的伙伴

华为开发者联盟HarmonyOS课程体验官&#xff08;第四期&#xff09;活动&#xff0c;开始招募啦&#xff01; 如果你精益求精、乐于分享&#xff1b;如果你愿意为学堂课程优化改进出谋划策&#xff0c;那就快来加入我们吧&#xff01;学堂期待与你共同成长、一起进步&#xff0…

11、动手学深度学习——语言模型和数据集:代码详解

我们了解了如何将文本数据映射为词元&#xff0c;以及将这些词元可以视为一系列离散的观测&#xff0c;例如单词或字符。 假设长度为 T T T的文本序列中的词元依次为 x 1 , x 2 , … , x T x_1, x_2, \ldots, x_T x1​,x2​,…,xT​。于是&#xff0c; x t x_t xt​&#xff08…

如何在Linux中配置网络?

在 Linux 中配置网络可以通过多种方式进行&#xff0c;以下是其中几种常见的方法&#xff1a; 使用网络管理工具&#xff1a; 大多数常见的 Linux 发行版都提供了图形界面的网络管理工具&#xff0c;如 NetworkManager 或 systemd-networkd。这些工具通常集成在系统设置&#x…