jenkins实现接口自动化持续集成(python+pytest+ Allure+git)

news2024/11/26 5:55:35

在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作。借助Jenkins,我们可以结合 Git/SVN 自动拉取代码,通过设置定时构建实现自动触发脚本执行,得到测试报告,最后还可以配置发送邮件等。今天我们就来分享下,如何结合 Git自动拉取代码,通过构建来自动执行python脚本输出测试报告。

Jenkins是开源的,使用Java编写的持续集成工具。需要安装JDK,如果已经安装了JDK可以跳过该步骤。

1. 安装JDK

去官网下载JDK:www.oracle.com/java/techno…

将下载好的压缩包放在Linux上

然后解压Java到相应目录:

输入命令:tar -zxvf jdk-11.0.8_linux-x64_bin.tar.gz /home/java

如果提示没有tar命令,输入yum install -y tar ,先安装tar

编辑环境变量,在/etc/profile文件中添加环境变量:

输入命令:vim /etc/profile

在文件最后添加内容如下,然后保存:

JAVA_HOME=/home/java/jdk-11.0.8
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export JRE_HOME
export PATH
export CLASSPATH
复制代码

输入命令source /etc/profile ,刷新环境变量配置文件使其立刻生效

到此,JDK已经安装完成。输入java -version 查看是否安装成功,出现如下图即安装成功。

PS:建议建一个Java的超链接。建立之后默认情况下从/usr/bin/java路径使用Java,yum安装的时候,这个链接会自动创建。

输入命令ln -s /home/java/jdk-11.0.8/bin/java /usr/bin/java

2. 安装Jenkins

官网:www.jenkins.io/download/ 选择对应的操作系统或者使用yum方式安装,这里我使用的是yum,因为比较方便:

yum的repos中默认是没有Jenkins的,所以我们需要先将Jenkins存储库添加到yum repos中。

点击官网中【CentOS/Fedora/Red Hat】系统,然后将命令复制粘贴到Linux系统中。

之后就可以看到系统开始自动下载安装。若出现提示是否下载输入:y并按回车。耐心等待安装完成。

启动Jenkins,命令:service jenkins start ,出现ok表示Jenkins启动成功。

在浏览器输入ip:8080进入Jenkins登录页面,输入密码。至此,Jenkins安装完成。

3. Job配置

新建一个自由风格的项目

进入工程配置页面,在源码管理下,选择Git:

如果源码管理中没有Git,说明你没有安装Git插件。点击【Manage Jenkins】,选择【Manage Plugins】,选择【可选插件】,在【搜索框】中输入git plugin,下载该插件。

安装成功如图所示,然后重启【Jenkins】:

构建执行shell,根据自己的脚本输入pytest命令。也就是说Jenkins将Git仓库代码下载之后,我们要怎么通过命令去执行脚本,这个根据自己执行脚本的情况填写即可,这里和我们手工执行脚本的操作是一致的,然后点击保存。

点击【Build Now[立即构建]】,可以看到正在执行的构建Job

4. 测试报告

当用例执行完成之后,我们想看用例执行的情况,而pytest不仅支持pytest-html插件,还可以使用allure生成更加美观的测试报告。Allure框架是一个灵活的轻量级多语言测试报告工具,它不仅以web的方式展示了简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息。所以我们这里选择的是Allure框架。

从dev/qa的角度来看,Allure报告简化了常见缺陷的统计:失败的测试可以分为bug和被中断的测试,还可以配置日志、步骤、fixture、附件、计时、执行历史以及与TMS和BUG管理系统集成,所以,通过以上配置,所有负责的开发人员和测试人员可以尽可能的掌握测试信息。

从管理者的角度来看,Allure提供了一个清晰的“大图”,其中包括已覆盖的特性、缺陷聚集的位置、执行时间轴的外观以及许多其他方便的事情。allure的模块化和可扩展性保证了您总是能够对某些东西进行微调,使Allure更适合您,那么今天我们就来说说如何使报告更加详细的显示我们需要的信息,以及allure与jenkins的集成。

4.1 下载Allure插件与配置Allure

点击【Manage Jenkins】,选择【Manage Plugins】,选择【可选插件】,在【搜索框】中输入Allure,下载该插件。下载成功之后重启Jenkins。

进入全局工具配置【Global Tool Configuration】,下拉最后一项,会看到【Allure Commandline】项,按下图配置之后保存即可:

进入配置,点击【构建后操作(Post-build Actions)】,选择Allure Report

Results:输入Path路径,这里的path路径表示在项目根目录下生成此文件夹,文件夹用来保存生成html报告之前所依赖的json,xml,txt等类型文件。

Report path:输入保存html报告路径。

点击【Build Now[立即构建]】,执行结束之后可以看到生成的Allure报告

4.2 Allure报告展示

5. 发送邮件

Jenkins默认提供了一个邮件通知E-mail Notification,但功能有很多的局限性,不够灵活。比如:无法定义邮件的格式、邮件通知无法提供详细的邮件内容。在这里我们使用Email Extension Plugin插件。该插件能够允许你自定义邮件发送的具体内容、邮件格式等。

5.1 下载Email插件与配置Email

点击【Manage Jenkins】,选择【Manage Plugins】,选择【可选插件】,在【搜索框】中输入Email Extension Plugin,下载该插件。下载成功之后重启Jenkins。

进入系统设置【System Configuration】,找到【Jenkins Location】,设置Jenkins URL与发件人的邮件地址

找到“Extended E-mail Notification”,设置以下内容:

详细参数介绍:

Override Global Settings:如果不选,该插件将使用默认的E-mail Notification通知选项。反之,可以通过指定不同于的设置来进行覆盖。 
Default Content Type:指定构建后发送邮件内容的类型,有Text和HTML两种。 
Use List-ID Email Header:为所有的邮件设置一个List-ID的邮件信头。 
Add 'Precedence: bulk' Email Header:设置优先级。 
Default Recipients:自定义默认电子邮件收件人列表。 
Reply To List:回复列表。 
Emergency reroute:如果这个字段不为空,所有的电子邮件将被单独发送到该地址(或地址列表)。 
Excluded Committers:防止邮件被邮件系统认为是垃圾邮件,邮件列表应该没有扩展的账户名(如:@domain.com),并且使用逗号分隔。 
Default Subject:自定义邮件通知的默认主题名称。该选项能在邮件的主题字段中替换一些参数,这样就可以在构建中包含指定的输出信息。 
Maximum Attachment Size:邮件最大附件大小。 
Default Content:自定义邮件通知的默认内容主体。该选项能在邮件的内容中替换一些参数,这样就可以在构建中包含指定的输出信息。 
Default Pre-send Script:默认发送前执行的脚本。 
Enable Debug Mode:启用插件的调试模式。 
nable Security:启用时,会禁用发送脚本的能力,直接进入Jenkins实例。如果用户试图访问Jenkins管理对象实例,将抛出一个安全异常。 
Content Token Reference:邮件中可以使用的变量,所有的变量都是可选的。
复制代码

进入配置,点击【构建后操作(Post-build Actions)】,找到【Extended E-mail Notification】,设置以下内容:

触发器参数说明

Failure:即时发送构建失败的邮件。如果”Still Failing”触发器已配置,而上一次构建的状态是”Failure”,那么”Still Failing”触发器将发送一封邮件来替代(它)。 
Unstable:即时发送构建不稳固的邮件。如果”Still Unstable”触发器已配置,而上一次构建的状态是”Unstable”,那么”Still Unstable”触发器将发送一封邮件来替代(它)。 
Still Failing:如果两次或两次以上连续构建的状态为”Failure”,发送该邮件。 
Success:如果构建的状态为”Successful”发送邮件。如果”Fixed”已配置,而上次构建的状态为“Failure”或“Unstable”,那么”Fixed”触发器将发送一封邮件来替代(它)。 
Fixed:当构建状态从“Failure”或“Unstable”变为”Successful”时发送邮件。 
Still Unstable:如果两次或两次以上连续构建的状态为” Unstable “,发送该邮件。 
Before Build:当构建开始时发送邮件。 
复制代码

点击【Build Now[立即构建]】,执行结束之后。如果执行成功,将不会发送邮件给收件人;如果执行失败,将会发送一封邮件给收件人,邮件内容根据自己情况自定义。

5.2 邮件展示

6. 总结

本文主要描述了通过Git自动拉取代码,然后Jenkins构建自动执行python脚本输出测试报告,如果执行失败,通过邮件自动将测试报告发送给收件人。 后期还有许多优化的地方,希望和大家一起来探讨。


绵薄之力【软件测试全套资源分享】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得话可以直接拿走 【保证100%免费】

这些资料,对于从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……

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

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

相关文章

1.6实验6:配置多区域OSPF

1.4.1实验6:配置多区域OSPF 实验需求实现OSPF多区域配置阐明OSPF的LSA的类型阐明OSPF引入外部路由的配置方法阐明向OSPF引入缺省路由的方法实验拓扑配置多区域OSPF如图1-16所示。 图1-16 配置多区域OSPF 实验步骤[1] IP地址配置

Seata源码学习(二)-源码入口

Seata源码剖析-源码入口 Seata客户端启动 首先一个Seata的客户端启动一般分为几个流程: 自动加载各种Bean及配置信息初始化TM初始化RM(具体服务)初始化分布式事务客户端完成,代理数据源连接TC(Seata服务端&#xff…

第三部分:(主从)复合句——第二章:定语从句

若多件事不一样重要,连接到一块就构成了主从复合句,主要的事情写成主句,次要的事情写成从句,从句虽然不是主要描述的事情,但从句是考试常考的地方,从句有很多复杂的变化,前面需要加上一些连接词…

118.(leaflet篇)leaflet空间判断-点与geojson面图层的空间关系(turf实现)

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> <html>

【算法自由之路】 贪心算法

贪心算法 局部最右得到全局最右难点在于如何证明局部最优可以得到全局最优堆 和 排序 是贪心算法最常用的实现算法 贪心算法作为最符合自然智慧的算法&#xff0c;思路是从小部分取最优从而获得最终的最优&#xff0c;但是难得是怎样获取部分最优才能得到全局最优。 有时候我…

9个EXCEL舍入函数公式的用法和实例

用法和实例 1. ROUND ROUND函数可以将数字四舍五入到指定的小数位数。 语法&#xff1a;ROUND(number, num_digits) number&#xff1a;要四舍五入的数字。 num_digits&#xff1a;要保留的小数位数。 举例&#xff1a; ROUND(3.14159,2)&#xff0c;结果为3.14 ROUND(3.141…

如何在Excel中向下拉列表中添加条件

在Excel中向下拉列表中添加条件 创建矩阵型数据集创建下拉列表创建第一个下拉列表创建第二个下拉列表你可以使用Microsoft Excel下拉列表来显示一个简单的列表,尽管有时需要更多的控制。假设你的人员分散在四个地区:北部、南部、东部和西部。你希望按地区与人员合作,而不是与…

界面组件DevExpress Reporting v22.2 - 增强的Web报表组件UI

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。DevExpress Reporting v22.2版本已正式发布&…

【LeetCode】剑指 Offer 04. 二维数组中的查找 p44 -- Java Version

题目链接&#xff1a; https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/ 1. 题目介绍&#xff08;04. 二维数组中的查找&#xff09; 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递…

为什么要有分布式锁?

Redis避坑指南&#xff1a;为什么要有分布式锁&#xff1f;作者&#xff1a;京东保险 张江涛1、为什么要有分布式锁&#xff1f;JUC提供的锁机制&#xff0c;可以保证在同一个JVM进程中同一时刻只有一个线程执行操作逻辑&#xff1b;多服务多节点的情况下&#xff0c;就意味着有…

2023最新Java面试手册(性能优化+微服务架构+并发编程+开源框架)

Java面试手册 一、性能优化面试专栏 1.1、 tomcat性能优化整理 1.2、JVM性能优化整理 1.3、Mysql性能优化整理 二、微服务架构面试专栏 2.1、SpringCloud面试整理 2.2、SpringBoot面试整理 2.3、Dubbo面试整理 三、并发编程高级面试专栏 四、开源框架面试题专栏 4.1、Sprin…

勒索软件、网络钓鱼、零信任和网络安全的新常态

当疫情来袭时&#xff0c;网络罪犯看到了他们的机会。随着公司办公、政府机构、学校和大学从以往的工作模式转向远程线上办公模式&#xff0c;甚至许多医疗保健设施都转向线上&#xff0c;这种快速的过渡性质导致了不可避免的网络安全漏洞。消费者宽带和个人设备破坏了企业安全…

name不能作为js的变量名

今天看红宝书的时候&#xff0c;看中到&#xff1a; null和undefined值没有toString()方法&#xff0c;而String()却能够将null和undefined转化成对应的字符串。 想着去尝试一下&#xff0c;用到了name作为变量值&#xff0c;发现让name为null或undefined的时候&#xff0c;就…

(C00102)基于Servlet的在线服装销售管理系统——有文档

基于Servlet的在线服装销售管理系统项目简介项目获取开发环境项目技术运行截图项目简介 本项目是基于J2EE的servlet的在线服装销售管理系统&#xff0c;衣服、裤子、上衣等等&#xff0c;本项目有三种权限&#xff1a;游客、用户、管理员 游客&#xff1a;服装浏览、加入购物车…

“鸡血驱动”为CS:GO、LOL注入“强心剂”!英特尔锐炫A750显卡实测

自推出锐炫系独显以来&#xff0c;英特尔一直在为自家的独显产品的市场竞争力添砖加瓦&#xff0c;其中就包括了驱动程序的持续更新优化和市场策略的调整。在驱动部分&#xff0c;在去年底31.0.101.3802版的小优化更新之后&#xff0c;今年2月初又陆续更新了31.0.101.4091 WHQL…

手把手教你二进制安装生产环境 K8s 多 master 节点高可用集群详细图文教程

目录 一、集群环境准备 1.1 kubeadm 和二进制安装 k8s 适用场景分析 1.2 多 master 节点高可用架构图 二、基础环境配置&#xff08;以下操作所有节点都得执⾏&#xff09; 2.1 初步的环境初始化 2.2 关闭交换分区 swap 提升性能 2.3 修改机器内核参数 2.4 配置阿里云…

深入理解 Handler(java 层 + native 层)

文章目录回顾线程消息队列时怎样实现的消息是怎么传递的&#xff1f;Handle 的延迟消息是怎么处理的&#xff1f;IdleHandler 的原理主线程进入了 Looper 循环为什么没有 ANR&#xff1f;消息屏障是什么&#xff1f;回顾 之前学习过Handler相关的基础知识&#xff0c;今天再学…

ESP-IDF + Vscode ESP32 开发环境搭建以及开发入门

ESP-IDF Vscode ESP32 开发环境搭建以及开发入门 文章目录ESP-IDF Vscode ESP32 开发环境搭建以及开发入门1. 前言2. 下载开发工具3. 配置工具4. 创建工程5. 解决vscode找不到头文件&#xff0c;波浪线警告6. 添加自己的组件6.1 组件说明6.2 添加项目组件6.3 添加扩展组件7. …

Python进阶篇(一)-- Django快速上手

1 Django概述 Web框架&#xff0c;就是用于开发Web服务器端应用的基础设施&#xff0c;说得通俗一点就是一系列封装好的模块和工具。事实上&#xff0c;即便没有Web框架&#xff0c;我们仍然可以通过socket或CGI来开发Web服务器端应用&#xff0c;但是这样做的成本和代价在商业…

Stable Diffusion 1 - 初始跑通 文字生成图片

文章目录关于 Stable DiffusionLexica代码实现安装依赖库登陆 huggingface查看 huggingface token下载模型计算生成设置宽高测试迭代次数生成多列图片关于 Stable Diffusion A latent text-to-image diffusion model Stable Diffusion 是一个文本到图像的潜在扩散模型&#xff…