Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)

news2024/11/25 11:03:07

📌 博客主页: 程序员二黑
📌 专注于软件测试领域相关技术实践和思考,持续分享自动化软件测试开发干货知识!
📌 公号同名,欢迎加入我的测试交流群,我们一起交流学习!

目录

    • Jenkins简介
    • Jenkins环境准备
    • pip install xmlrunner
    • 搭建Jenkins
    • 资源分享

Jenkins简介

Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目。所以Jenkins和Hudson功能相似。

Jenkins支持各种版本的控制工具,如CVS、SVN、Git、Mercurial、Perforce和ClearCase,而且可以执行用Apache Ant或Java Maven构建的项目。同时,它也可以利用一些插件、Shell脚本和Windows批处理命令来构建其他平台的项目。

Jenkins除了构建软件功能外,还可以用于搭建自动化测试环境,比如实现Python Selenium测试的无人值守的情况下按照预定的时间调度运行(如晚上),或者每次代码变更提交至版本控制系统时实现自动运行的效果。

下面,我将演式如何搭建Jenkins并创建一个自由风格的软件项目在无人值守的情况下按预定时间自动化测试(基于Python Selenium自动化测试)。

Jenkins环境准备

为了能够成功使用Jenkins执行测试,我们需要做一些修改。目标是在Jenkins上按计划执行测试,然后收集测试结果并显示在Jenkins Dashboard页面。为了实践,我将重用之前创建的百度冒烟测试。

我使用了unittest的TestSuite Runner批量执行测试,并以JUnit报告的格式输出测试结果。这里需要用到Python下的xmlrunner库。执行以下命令下载与安装xmlrunner。

pip install xmlrunner

百度冒烟测试脚本在通过TestSuite Runner运行homepagetests.py和searchtests.py两个脚本中的测试。最后用xmlrunner.XMLTestRunner来运行冒烟测试并生成JUnit测试报告。此报告以XML格式生成,保存在test-reports子文件夹中。代码如下:

生成的XML格式的report如下:

搭建Jenkins

搭建Jenkins简单。下载系统平台的Jenkins包并进行安装。下面我将安装并启动Jenkins,然后创建一个新的构建作业以对上面的脚本进行在无人值守的情况下按照预定的时间调度运行(百度冒烟测试)。

1)下载并安装Jenkins CI服务器。我下载的是Jenkins Windows安装包,并在Windows7上安装Jenkins。

2)从浏览器进入Jenkins Dashboard页面(默认情况下为http://localhost:8080)。

3)在Jenkins Dashboard页面上,单击新建项目(New Item)链接,创建一个新的Jenkins作业,如下图所示:

4)在项目名称(Item name)文本框中输入Baidu_Smoke_Test,然后选择构建自由风格的软件项目(Freestyle project)单选按钮,如下图所示:

5)单击确定(OK)按钮。以上指定名称命名的新作业就创建成功了。

6)在构建(Bulid)部分,单击增加构建步骤(Add build step),然后从下拉列表中选择执行Windows批处理命令(Execute Windows batch command)选项,如下图所示:

在这里插入图片描述
7)在命令(Command)文本框里输入以下命令,如下图所示。这个命令将冒烟测试的Python脚本文件复制到Jenkins工作空间下并执行smoketest.py。

8)在前面已经配置了smoketest.py以生成JUnit格式的测试结果,并将测试结果显示在Jenkins Dashboard页面。要在Jenkins中集成这些报告,先单击增加构建后操作步骤(Add post-build action),然后选择发布JUnit测试结果报告(Publish JUnit test result report)选项,如下图所示:


9)在构建后操作(Post-build Aactions)部分中,在测试报告XML(Test report XMLs)文本框中添加test-report/*.xml,如下图所示。Jenkins每次运行测试的时候,它将从test-reports子文件夹中读取测试结果。


10)由于需要按计划时间自动执行测试,在构建触发器(Build Triggers)部分选择定期构建(Build periodically),并在计划(Schedule)文本框中输入如下图所示数据。那么,每天下午18:24构建过程将自动触发,作为无人值守构建过程的一部分,Jenkins也将自动执行测试,这样在第二天早上当你到达办公室的时候就可以看到测试执行结果了。


11)单击保存按钮保存作业配置,Jenkins将会显示新创建的作业项目页面。

12)现在可以来检测一下所有的配置是否设置好,测试是否能成功执行。单击立即构建(Build Now)链接手动运行该作业,如下图所示:


 13)在构建历史(Build History)部分中可以查看构建的运行状态,如下图所示:

14)单击构建历史(Build History)部分中正在运行的项目,将打开如下图所示的页面。

在这里插入图片描述

15)除了Jenkins页面上的执行状态和进度条,还可以通过打开控制台输出(Console Output)链接观察后执行信息。如下图是有命令输出信息的“控制台输出”页面。

在这里插入图片描述

16)一旦Jenkins完成构建过程,就可以看到一个类似于下面截图所示的构建页面。

17)Jenkins通过读取unittest框架生成的测试文件,在页面上显示测试结果和其他各项指标。单击构建页面上的测试结果(Test Results)链接可以查看Jenkins保存的测试结果。

18)之前配置的测试结果以JUnit格式生成。当单击测试结果(Test Results)时,Jenkins将会显示JUnit测试结果,如下图所示,显示测试结果摘要,其中失败的测试会高亮显示。

在这里插入图片描述
  19)我们也可以单击Package名字的链接来查看各个测试的详细结果信息,如下图所示:

在这里插入图片描述

20)Jenkins还会以下图所示的格式在Dashboard主页上显示所有构建作业的最终状态信息。

 综上所述,通过搭建Jenkins运行Python Selenium测试,从而实现每天晚上在无人值守的情况下自动构建程序和执行测试。即实现了简单的持续集成测试。


资源分享

下面这份资源,对于想学习【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望也能帮助到你!在这里插入图片描述

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

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

相关文章

Linux无法访问本机mysql

问题描述:maven打包成jar包运行再linux中,数据库访问主机无法访问 可能问题: 目录 1.未修改mysql访问权限,修改user表,%表示任意ip 2.ip地址不对,需要找到ipV4的地址 3.导入jar包不对 4.打包成jar包插…

Mac 窗口管理分屏工具软件【Wins】

Wins,为 Mac 带来系统级的分屏功能,快速分屏,只需拖动窗口到屏幕边缘即可进行分屏操作。提供了分屏预览动画和触发分屏后的动画效果。 单设备永久使用,免费更新。仅需95 Wins 激活码:Wins - Mac 窗口管理分屏工具软…

HBM MM CDM Latch-Up

1、HBM(Human Body model):正常2000V JEDEC document JEP155 states that 500-V HBM allows safe manufacturing with a standard ESD control process。 HBM VS System ESD 2、MM(Machine Model),已经被J…

遥感测深方法综述(三)机载雷达测深系统关键参数

下面两张图分别是CZMIL Nova和SuperNova的技术参数,从图中可以看出,与最大探测深度有关的参数是Kd ,且标称的最大深度4.X/Kd要求底质反射率大于15%。 1、海底底质对测量的影响 在进行激光测深的时候,海底底质的反射率对测量结果将…

【C++】继承(万字详解) —— 切片 | 隐藏 | 子类的默认成员函数 | 菱形继承

🌈欢迎来到C专栏~~继承 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一句鸡汤&#x1…

力扣 1945. 字符串转化后的各位数字之和

题目 给你一个由小写字母组成的字符串 s ,以及一个整数 k 。 首先,用字母在字母表中的位置替换该字母,将 s 转化 为一个整数(也就是,‘a’ 用 1 替换,‘b’ 用 2 替换,… ‘z’ 用 26 替换&am…

华为二面,原来是我对自动化测试的理解太肤浅了..

如何使用Python实现自动化测试 如果你入职一家新的公司,领导让你开展自动化测试,作为一个新人,你肯定会手忙脚乱,你会如何落地自动化测试呢?资深测试架构师沉醉将告诉你如何落地自动kan化测试,本次话题主要…

ChatGPT+Midjourney实现儿童绘本故事及其插图(数字1~10的故事)

一、背景 近期AI对话技术与AI绘画技术突飞猛进。其中1.)AI对话技术是指用于模拟人类语言交流的人工智能技术。它可以让机器通过自然语言文本或语音与人类进行交流,并能理解人类的话语内容并做出相应的回应。对话技术在语音助手、智能客服、智能创作等领域…

Android核心基础总结——小菜爱教程

-0基础学习路线 Java基础 设计模式 Linux基础 数据库 网络协议 Android基础 服务器端开发 然后就是环境搭建、activity、intent、Android基础、基础应用开发。如阶梯图: 核心基础进阶 1、泛型、注解 2、动态编程技术 3、虚拟机 4、虚拟机垃圾回收 5、类与对象…

忘掉Xavier初始化吧!最强初始化方法ZerO来了

文 | 小戏谈及最典型的深度学习模型的训练,脑海里浮现的格式化的套路是什么?给定一个问题,给定一个数据集,弯弯绕绕确定好选择的神经网络的架构,然后上手调参,接下来的工作彷佛像是固定的重复工作&#xff…

AD20和立创EDA设计(3)微调原理图和原理图检查

(1)本文主要介绍如何将从立创EDA导出的原理图在AD20进行调整。 (2)需提前观看:AD20和立创EDA设计(2)提取立创EDA的原理图库和PCB库; (3)邀请加入嵌入式社区&a…

英语学习词根词缀总结

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 点击跳转浏览。 目录 一.联想法 二.词根词缀法 索引 高频词根A-B系列 1.ab/abs- 表示远离,或否定 2.ac-/acr- 表示尖,酸&#x…

CSS基础总结(二)

文章目录 一、CSS复合选择器 1.后代选择器 2.子选择器 3.并集选择器 4.伪类选择器 复合选择器总结 二、CSS元素显示模式 1.概述 2.块元素 3.行内元素 4.行内块元素 5.元素显示模式的转换 元素显示模式总结 三、CSS背景 1.概述 2.背景图片 3.背景平铺 4.背景图片位…

[Android移动安全渗透基础教程] 易受攻击的移动应用程序

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 0x01 如何设置 GoatDroid (FourGoats) 1.1 简介(概述&#…

【014】基于Vue.js的移动端购物商城网站(含源码、课设报告)

文章目录一、项目介绍二、代码及报告获取一、项目介绍 基于Vue.js的移动端购物商城网站(含源码、课设报告),代码获取放在文末了,码字不易,感谢点赞~ 一、系统概述 本部分主要是对项目进行简要描述,包括开发背景、目的、内容及意…

用C++如何进行判断

📒博客主页: ​​开心档博客主页​​ 🎉欢迎关注🔎点赞👍收藏⭐留言📝 📌本文由开心档原创! 📆51CTO首发时间:🌴2022年12月12日🌴 ✉…

5个可保存的在线代码片段平台推荐-变成自己的代码词典库

文章目录1、谷歌等现代浏览器自带的代码片段2、github、gitee、gitcode等在线托管平台的gist列表3、各大在线IDE平台4、掘金代码片段5、在线笔记1、谷歌等现代浏览器自带的代码片段 路径:浏览器开发者工具->源代码->代码段 可以新建很多代码段,在…

深度Linux 居家办公 内网穿透 ssh反向映射 访问公司办公内网 局域网的一个简单方案 + vnc图形界面

1. 公网服务器 自行参考以下项目: x86_64: Docker arm64: Docker 2. 处于内网的办公机器 2.1 vpn客户端 BIOS配置定时开机(一般在电源选项或者唤醒设置里) 安装vpn客户端,配置好证书 配置开机自动,参考配置 /usr/…

[附源码]Nodejs计算机毕业设计基于的扶贫产品展销平台Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

架构设计(三):引入缓存

架构设计(三):引入缓存 作者:Grey 原文地址: 博客园:架构设计(三):引入缓存 CSDN:架构设计(三):引入缓存 缓存是一个…