利用 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 函数。但是,如果你喜欢对项目进行原位排序,…

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应用场景 …

centos环境搭建nsq单点

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

如何用Jmeter做性能测试

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

AtcoderABC244场

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

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

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

unity背景缓动动效

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

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

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

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

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

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

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

GPT与人类:人工智能是否能够真正复制人类语言?

人类语言是一种复杂的系统,它不仅包含着无数单词和语法规则,更重要的是具有丰富的含义和上下文。这些语言特征涉及到常识、文化、情感和经验等方面,是人类在长期进化和文明发展中所积累起来的丰富知识和经验的体现。然而,人工智能…

SpringCloud学习路线(7)—— 统一网关Gateway

一、引言 (一)需求: 服务器中的微服务只允许内部人员调用或是内网人员进行调用,拒绝外网人员访问。 (二)如何实现需求? 网关 (三)网关的功能 身份认证和权限校验服务…

java线上故障排查套路总结

线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连&#x…

Principle Component Analysis

简述PCA的计算过程 输入:数据集X{x1,x2,...,xn},需降到k维 ① 去中心化(去均值,即每个特征减去各自的均值) ② 计算协方差矩阵1/nX*X^T(1/n不影响特征向量&#xff09…