Docker+jenkinsPipeline运行实现python自动化测试(超详细)

news2024/12/29 9:25:26

一、实现思路

  1. 在 Linux 服务器安装 docker
  2. 创建 jenkins 容器
  3. jenkins 中创建 pipeline 项目
  4. 根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境)
  5. 运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目
  6. 执行完成之后删除容器

二、环境准备

  • Linux 服务器一台(我的是 CentOS7)
    1、有云服务器的同学直接用云服务器2、没有云服务器的同学参考我的博客自己动手安装虚拟机吧
  • 在服务器上正确安装 docker
    1、拉取 jenkins 镜像jenkins/jenkins:alpine2、拉取 python3 镜像docker pull python:3-alpine

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

字节大佬教你逼自己如何在15天内掌握自动化测试(接口自动化/APP自动化/Web自动化/性能测试),内含项目实战

三、创建 jenkins 容器

  1. 命令
    docker run -dit --name=jenkins_save01 -p 9999:8080 -u=root -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:alpine
  2. 参数说明
    -i:表示运行容器-t:表示容器启动后会进入其命令行-d:守护式方式创建容器在后台运行--name:容器名称-p 9999:8080:端口映射,宿主机端口:jenkins 容器端口-u=root:指定容器用户为 root 用户-v /var/run/docker.sock:/var/run/docker.sock:将 docker.sock 映射到 jenkins 容器中docker.sock 文件是 docker client 与 docker daemon 通讯的文件-v /usr/bin/docker:/usr/bin/docker:将宿主机 docker 客户端映射到 jenkins 容器中
  3. 运行效果
    1、看到返回容器 ID 表示 jenkins 容器创建成功

四。 配置 jenkins 容器

  1. 浏览器访问 http://192.168.1.66:9999,来到 jenkins 解锁页面
    1、http://192.168.1.66 为 Linux 服务器 IP 地址2、9999 为宿主机映射端口

在 Linux 服务器执行命令获取管理员密码
执行命令:docker logs jenkins_save01

复制密码输入到密码框,点下一步,来到如下页面(中间需要等待一段时间,大概 1 分钟左右,耐心等待)

  

取消默认插件勾选,进入下一步

设置管理员用户名和密码(以后就用这个账号密码登陆你的 jenkins

配置实例

jenkins 初始化完成看到如下界面

五。 jenkins 安装插件

点上一步骤开始使用 jenkins,来到如下界面

点 Manage Jenkins 来到如下页面

点 Manage Plugins 安装插件
1.Git 插件安装

2、Docker 插件安装


 

3、HTML Publisher 插件安装


 

4、安装 Pipeline 插件

 
5、安装完成后重启 jenkins 容器
docker restart jenkins_save01

六。 创建 jenkins 任务

重新登陆 jenkins,点 New Item

选择创建 Pipeline 项目

配置构建记录保留规则

配置 Git 仓库

 添加 Git 凭证

配置 Jenkinsfile 路径

配置完成直接点保存即可

七。 构建有项目执行环境的 python 镜像

  1. 将项目依赖包导出来到 requirements.txt 文件中,txt 文件名称可以随意写
    pip freeze > requirements.txt
  2. 在宿主机(安装 docker 的机子)上新建一个目录(我的目录在/app),将 requirements.txt 文件复制进去
  3. 在 app 目录下创建 Dockerfile 文件(文件名必须是 Dockerfile,没有后缀)
  4. requirement.txt 恩建内容如下
unittestreport==1.3.2
openpyxl==3.0.7
ddt==1.4.2
pytest==6.2.2
selenium==3.141.0
pymysql==1.0.2
faker==8.1.0
jsonpath==0.82
BeautifulReport==0.1.3
rsa==4.7.2
pytest-html==3.1.1
allure-pytest==2.9.43
requests-toolbelt==0.9.1

5.Dockerfile 内容以及解释如下

FROM python:3-alpine  #基于python:3-alpine这个基础镜像镜像构建镜像
WORKDIR /app   #切换工作空间目录
ADD ./requirements.txt /app #将python项目依赖包文件添加到镜像
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple #安装依赖包
CMD ["python3", "main.py"] #设置容器执行后自动执行的命令,这里main.py是我们自动化框架的执行入口文件

在 app 目录下执行镜像构建命令
docker build -t python3.9:haili .
-t:镜像名称
点(.):点表示 Dockerfile 文件所在的目录,我现在在 app 目录下,点表示当前目录

6.构建成功后会看到一个新的镜像(docker images)

八、创建 build.sh 文件并放到项目根目录下

  echo "运行容器python执行自动化"
docker run --rm -w=$WORKSPACE --volumes-from=jenkins_save01 python3.9:haili
echo "python执行自动化执行成功"

九、写 Jenkinsfile 文件并将放到项目根目录下

  pipeline{
    //配置执行环境
    agent any
    //配置构建过程
	stages{
		stage('build'){
			steps{
			    echo '开始执行shell脚本'
				sh 'sh build.sh'
			}
		}//stage
	}//stages

   //配置构建后操作
	post{
        always{
          echo 'Pipeline 构建成功'
                   		publishHTML(target:[allowMissing: false,
					 alwaysLinkToLastBuild: true,
					 keepAll: true,
					 reportDir: 'reports',
					 reportFiles: '*.html',
					 reportName: 'My Reports',
					 reportTitles: 'The Report'])
        }
    }//post
}//pipeline

十、提交代码到远程仓库

Git add .

Git commit -am'update'

Git push

十一、构建你 jenkins 任务

点构建

查看构建日志

查看测试报告,此时的测试报告会没有样式,因为被 Jenkins 禁用了 CSS 样式,需要我们手动解决

  

十二、解决测试报告没有样式的问题

  

把这个代码放进去执行:System.setProperty("

hudson.model.DirectoryBrowserSupport.CSP","")

执行成功返回是空,说明没问题

重新构建就可以看到漂亮的测试报告了


都看到这了,点个赞再走呗!

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助,有需要的朋友你可以dd我。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近100个G。

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

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

 

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

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

相关文章

Java基础入门·多线程·线程池ThreadPool篇

前言 特点分析 线程池ThreadPool 销毁线程池 Executor类 ​​​​​​​ ​​​​​​​ ​​​​​​​ Callable接口 线程池使用 ​​​​​​​…

全面详解Maven的配置文件pom.xml(含常用plugin)

系列文章目录 手把手教你maven的安装与配置(windows) 全面详解Maven的配置文件pom.xml(含常用plugin) 系列文章目录一、什么是pom.xml二、pom.xml的结构三、项目的基本信息1.modules2.parent3.scm4.properties 四、项目的依赖列表1.dependency2.reposit…

【Cocos Creator 3.5实现赛车游戏】10.实现汽车节点的运动逻辑

转载知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具 项目地址:赛车小游戏-基于Cocos Creator 3.5版本实现: 课程的源码,基于Cocos Creator 3.5版本实现 上一节的学习后,您已经完成了对汽车节点的控制逻…

数字IC设计之时序分析基础概念汇总

1 时钟Clock 理想的时钟模型是一个占空比为50%且周期固定的方波。时钟是FPGA中同步电路逻辑运行的一个基准。理想的时钟信号如下图: 2 时钟抖动Clock Jitter 理想的时钟信号是完美的方波,但是实际的方波是存在一些时钟抖动的。那么什么是时钟抖动呢?时钟抖动&#…

(2)数据库mongodb 终端 和 vscode创建数据库 数据导入导出

可视化工具: Robo 3T | Free, open-source MongoDB GUI (formerly Robomongo) mongodb安装官网:MongoDB: The Developer Data Platform | MongoDB 文档:安装 MongoDB - MongoDB-CN-Manual (mongoing.com) 配置环境变量: 是为了扩…

【图论】有向图的强连通分量

算法提高课笔记(本篇未更新完 还有俩例题) 文章目录 理论基础SCC板子 例题受欢迎的牛题意思路代码 学校网络题意思路代码 理论基础 什么是连通分量? 对于一个有向图,分量中任意两点u,v,必然可以从u走到v…

跑步运动耳机哪个牌子好、推荐几款专业跑步耳机

跑步是一项简单的运动,只要交替迈左右腿就能进行。然而,跑步也可能会变得单调乏味。即使是意志坚定、热爱跑步的人,在这漫长的过程中也会感到乏味,更不用说像你我这样的普通跑者了。音乐能够让跑步这项运动变得有趣起来&#xff0…

前端自适应瀑布流布局

JS案例自适应瀑布流 🌟效果预览 🌟什么是瀑布流 🌟制作思路 🌟具体实现 页面结构 js代码实现 🌟写在最后 🌟效果预览 前端自适应瀑布流效果预览 🌟什么是瀑布流 瀑布流,又…

prize_p1

文章目录 解题过程代码审计思路问题解决数组绕过preg_match__destruct的触发修改phar文件以及签名phar://支持的后缀 题解方法一&#xff08;数组绕过&#xff09;方法二&#xff08;gzip绕过&#xff09; 解题过程 源代码 <META http-equiv"Content-Type" conte…

3D人体生成名人堂

一、马普所认知系统实验室。 Perceiving Systems - Max Planck Institute for Intelligent SystemsUsing computer vision, computer graphics, and machine learning, we teach computers to see people and understand their behavior in complex 3D scenes. We are located…

《Prometheus 监控实践:从零到英雄》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

【服务器 | 宝塔】宝塔面板卸载重装教程:清理删除宝塔面板并重新开始

宝塔面板卸载重装怎么操作?我们很多用户可能安装宝塔之后会经常看一下有没有新版本&#xff0c;如果有新版直接右上角 宝塔面板卸载重装怎么操作?我们很多用户可能安装宝塔之后会经常看一下有没有新版本&#xff0c;如果有新版直接右上角”更新”升级一下版本就可以了&#…

1-4 AUTOSAR方法论

总目录——AUTOSAR入门详解AUTOSAR入门详解目录汇总&#xff1a;待续中。。。https://xianfan.blog.csdn.net/article/details/132818463 目录 一、前言 二、方法论 三、单个ECU开发流程 一、前言 汽车生产供应链上有以下角色&#xff1a;OEM、TIER1、TIER2&#xff0c;其主…

提示msvcr120.dll丢失怎样修复呢?全面分析msvcr120.dll解决方法

在计算机使用过程中&#xff0c;可能会遇到 msvcr120.dll 丢失的问题。msvcr120.dll 是 Microsoft Visual C Redistributable 的一部分&#xff0c;是一个动态链接库文件&#xff08;DLL&#xff09;&#xff0c;用于支持运行在 Windows 操作系统上使用了 Microsoft Visual C 2…

9.12|day 5|day 44 |完全背包| 518. 零钱兑换 II | 377. 组合总和 Ⅳ

● 完全背包 主要是看清01背包和完全背包的区别 //01背包 for(int i 0;i<weight.size();i){ for(int j bagWeight;j>weight[i];j--){dp[j] Math.max(dp[j],dp[j-weight[i]]value[i]); } } //完全背包 for(int i 0;i<weight.size();i){for(int j weight[i];j<…

数据结构——排序算法——冒泡排序

冒泡排序1 void swap(vector<int> arr, int i, int j) {int temp arr[i];arr[i] arr[j];arr[j] temp;}void bubbleSort1(vector<int> arr) {for (int i 0; i < arr.size() - 1; i){for (int j 0; j < arr.size() - 1 - i; j){if (arr[j] > arr[j 1…

c++ 学习 之 常函数 和 常对象

前言 常函数 成员函数后加 const 我们可以称这个函数为 常函数 常函数内不可以修改成员属性 成员属性声明时加关键字 mutable 后&#xff0c;在常函数中依然可以修改 常对象 常对象 声明对象前加 const 称该对象为常对象 常对象只能调用常函数 正文 常函数 class Person…

《深入分布式追踪:OpenTracing 实践手册》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

【面试题精讲】你知道MySQL中有哪些隔离级别吗

uuid: 7ae741a0-517a-11ee-93e3-6f2b73edb0c7 title: 【面试题精讲】你知道MySQL中有哪些隔离级别吗 tags: [MySQL, 隔离级别, 脏读, 幻读, 不可重复读] categories: [技术文章, 后端技术, 系列文章, 面试题精讲] abbrlink: 14595062 date: 2023-09-12 22:41:38 有时博客内容会…

Linux CentOS7修改命令行提示符

在CentOS操作系统中&#xff0c;命令和文件是我们与计算机进行交互的重要方式之一。有时候我们可能需要对某些命令、变量或文件进行修改&#xff0c;以满足特定的需求或提高工作效率。 本人在文章《Linux CentOS7命令及命令行》中对命令行提示符的修改作了初步介绍&#xff0c…