Docker+jenkinsPipeline 运行实现python自动化测试

news2024/11/17 3:51:01

一、实现思路

  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

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

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

自动化测试篇—实战案例:自动化及接口自动化本质及适用场景

三、创建 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:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G【点击文末小卡片免费领取】

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

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

送给大家一句话,共勉:当我们能力不足的时候,首先要做的是内修!当我们能力足够强大的时候,就可以外寻了! 

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

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

相关文章

centos7上 ytalk 命令找不到?yum没有ytalk的软件包

1.描述 [rootoomcserver ~]# yum search ytalk Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Repodata is over 2 weeks …

一文搞懂到底什么是元宇宙

一、背景 2021年,“元宇宙”是科技界的开端。 2021”元宇宙”这个词在Facebook更名后被点燃了,无疑是21世纪科技界最爆的起点。各式各样的定义、解读都出现了,有人说它是炒作,甚至是骗局,但也有人说它就是互联网的未…

公众号点击原文下载文件怎么设置

作为微信生态下的产品,公众号推文中添加外部超链接的能力,多年一直没有开放给广大的运营者,只有开通了微信支付的服务号,才能在公众号文章正文添加链接,对于经常在公众号分享课件资料或者需要添加各种申请表的运营者来…

信号采样基本概念 —— 7.数模转换(DAC ADC)

文章目录 数字转模拟(DAC)一个简单的数字转模拟方案 模拟转数字(ADC) 数字转模拟(DAC) 通常来说,我们在设备上存储的数据是以二进制进行传输的,但是当我们试图将数据传输到更远的地…

《深入理解计算机系统》(1):系统组成

一、系统硬件组成 1、控制器(CPU):解释和执行内存中的指令 (1)、控制器 程序控制器:指令指针,指向主存中的机器语言指令,为一个字大小的存储设备或寄存器。 指令寄存器、指令译码器、…

基于docker+Keepalived+Haproxy高可用前后的分离技术

基于dockerKeepalivedHaproxy高可用前后端分离技术 架构图 服务名docker-ip地址docker-keepalived-vip-iphaproxy-01docker-ip自动分配 未指定ip192.168.31.252haproxy-02docker-ip自动分配 未指定ip192.168.31.253 安装haproxy 宿主机ip 192.168.31.254 宿主机keepalived虚…

k8s-9 ingress-nginx 特性

TLS加密 创建证书 测试 auth认证 创建认证文件 rewrite重定向 进入域名 会自动重定向hostname.html 示例二: 测试 后面必须跟westos 这个关键字 canary金丝雀发布 基于header灰度 场景:版本的升级迭代,比如一个service 升级到另…

react学习之---jsx转成虚拟dom的过程

jsx----经过Bebal编译返回可供React.createElement()可调用的对象—React.createElement调用后生成虚拟dom—diff算法—生成新的真实dom 经过babel编译: import {greet} from ‘./utils’; const App {greet(‘scott’)}; ReactDOM.render(App, document.getEl…

芯引擎·新力量 | 第五届浦东新区长三角集成电路技能邀请赛圆满落幕

9月27日, 2023年全国工业和信息化技术技能大赛上海选拔赛、上海职工职业技能系列赛暨第五届浦东新区长三角集成电路技能邀请赛汽车芯片设计竞赛及颁奖典礼在上海集成电路设计产业园举办,上海市经济和信息化委员会人事教育处处长黄春华,上海市…

ESP32网络开发实例-Web服务器控制GPIO

Web服务器控制GPIO 文章目录 Web服务器控制GPIO1、软件准备2、硬件准备3、代码实现本文将介绍如何Arduino IDE编程环境创建一个具有ESP32的独立web服务器,ESP32控制输出(两个LED)。可以通过作为本地网络上的浏览器的任何设备访问。下面将逐步介绍如何创建web服务器以及代码的…

【Redis】Redis的几个应用场景(string数据类型的应用)

Redis的几个应用场景 缓存功能 ⽐较典型的缓存使⽤场景,其中Redis作为缓冲层,MySQL作为存储层,绝⼤部分请求的数据都是从Redis中获取。由于Redis具有⽀撑⾼并发的特性,所以缓存通常能起到加速读写和降低后端压⼒的作⽤。 计数功能…

MS2400隔离式调制器可pin对pin兼容AD7400

MS2400是一款二阶Σ-Δ调制器,集成片上数字隔离器,能将模拟输入信号转换为高速1位码流。可pin对pin兼容AD7400,可兼容AMC1303。调制器对输入信号连续采样,无需外部采样保持电路。模拟信号输入满量程为320mV,转换后的数…

物联网入门系列(一):快速搭建一站式数据存储与实时分析平台

本系列文章将以教程形式介绍物联网领域用户在安装部署、分布式数据库设计、数据写入和查询、流计算和高可用测试等过程中的常见问题、相应的解决方案与注意事项,以帮助新用户快速入门,体验 DolphinDB 的极致性能。 本次介绍内容为——如何快速搭建一站式…

pgpool密码验证失败问题

当使用命令 psql -p 9999 -U postgres -d postgres 登录pgpool时 出现错误:md5 authentication failed 认证问题 推测问题: 1.密码设置错误 2.密码加密方式不一致 在主库操作 查看用户密码 select rolname,rolpassword from pg_authid 可以看出之前密码…

3561-24-8|荧光染料6-fam(Br4)|可作为成像剂

产品简介:6-fam(Br4)是一种荧光染料,广泛应用于生物医学领域中的荧光探针、标记物和成像剂等方面。其分子结构独特,具有良好的荧光量子产率和稳定性,能够在生物体内快速、准确地标记和追踪生物分子和细胞。其优异的荧光性能和化学…

(十四)VBA常用基础知识:当前excel文件所有sheet循环,获取sheet名,获取最大行数最大列数

获取当前excel的所有sheet以及sheet名 Sub test()Dim ws As WorksheetFor Each ws In Worksheetsws.ActivateDebug.Print ws.NameNext ws End Sub 输出结果: Sheet1 Sheet2 Sheet3 Sheet4 Sheet52.获取最大行数 首先要明白取最大行的方式,为什么这样取…

Go:关于 Channel

文章目录 写在前面内容模型图与代码发送流程接收流程 写在前面 本篇主要是通过 Channel 的模型图,对 Channel 的原理做一个基本的概述 内容 模型图与代码 我们先来看下 Channel 的模型图: 以上的图是一个简要的模型图,意味着丢失一些细节…

【Spring Boot】SpringBoot 单元测试

SpringBoot 单元测试 一. 什么是单元测试二. 单元测试的好处三. Spring Boot 单元测试单元测试的实现步骤 一. 什么是单元测试 单元测试(unit testing),是指对软件中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试。 二. 单元测试的好处…

TDengine时序数据库学习使用

数据库要求: 1.目前服务器只能在linux运行,先安装服务器版本v1 2.下载与v1完全匹配的客户端版本v1(客户端与服务器的版本号不匹配可能访问不了服务器) 第一步 安装 安装服务器注意,安装教程: 使用安装…