Docker上搭建Pytest+Allure+Jenkins接口自动化环境

需求:在XX公司服务器Docker上搭建接口自动化环境,使用Jenkins每天定时运行 并将报告发生公司 飞书/钉钉群。但是目前遇到这样的一个问题,在服务器上部署了docker环境,然后安装了Jenkins容器 ,最后从git上拉取代码后 发现 代码在jenkins容器的目录当中,jenkins运行代码就必须要进入容器当中运行,这样是不可能的。

目前我想到 3 个方法去实现:
(1)启动jenkins容器时 将容器的目录挂载到宿主机目录上去执行(方法不能实现)pass
(2)在jenkins上创建本地节点,将代码拉取到本地 然后去运行本地项目(可以实现,局限性小)pass
(3)重新封装jenkins镜像,在jenkins镜像中安装自动化所需要的环境 在容器中执行项目(步骤虽麻烦,但一次封装后续永久使用)

一 、安装Docker

docker容器基本操作:直达

服务器上输入 docker -v 查看是否已安装
没有安装docker的同学 安装Docker

二、Docker上安装Jenkins

文章末尾直接提供封装好的镜像下载
在这里插入图片描述

1.查找docker上的镜像
	docker search jenkins
  
2.下载自己所需要的镜像
	docker pull jenkinsci/blueocean
  
3.查看是否下载成功
	docker images
  
4.启动下载的jenkins镜像
  docker run -d -p 10240:8080 -p 10241:50000 --restart=always -v /Users/songpeilun/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime  -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --name jenkins jenkins/blueocean
 
说明:
	docker run	运行
	-d:后台运行容器
  	-p:指定容器的端口映射 -p 10240:8080  # 将容器的8080端口映射到宿主机的10240端口上 ,映射多个端口使用 -p 8082:8080  -p 8083:8081
  	--restart=always:自动重启	#服务挂掉后下次自动重启
    -v:挂载宿主机目录和docker容器中的目录  
    	/Users/songpeilun/jenkins_home 	# 本地宿主机绝对目录
    	/var/jenkins_home	# 容器目录(将容器目录挂载到本地)
    -v:/etc/localtime:/etc/localtime  # 本地时间和容器时间同步
    -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai 	 # 设置容器时间为上海时间(不然容器时间和本地时间相差8小时)
      --name jenkint_test  # 设置容器的名称
      jenkinsci/blueocean	# 选择镜像名称启动容器(默认镜像后面会加latest  如果拉取自己创建的镜像后面要加自己的版本号)

!!容器目录挂载本地目录时 一定要给本地文件夹赋予权限  chmod 777 jenkins_home

2.1 启动jenkins

浏览器访问 http://localhost/:10240 如果无法访问请关闭系统防火墙
密码存放在 cat /var/jenkins_home/secrets/initialAdminPassword

在这里插入图片描述

三、Jenkins容器安装自动化环境

jenkins容器 使用git拉取代码后 默认是放在容器当中的/var/jenkins_home/workspace/autotest 无法正常运行代码。
在这里插入图片描述
在jenkins容器中安装python相关环境 就可以完美解决该问题。当然也可以在jenkins中创建宿主机 把代码映射到本地 然后在本地执行。但是这样做相当于电脑当做服务器 每次运行自动化之前都需要打开电脑。(我之前就是这么干的,局限性太小)

1.首先根据容器id进入容器内部

docker exec -itu root 容器id /bin/sh

weget 安装(不推荐,基本和现安装的方法差不多,先要安装一些依赖包,如 gcc 等)
apk add 安装(此版本是alpine :apk add,能够快速安装完成)

2.最后注意系统版本问题:

如果是 centos 那即是 yum
如果是 ubuntu 那即是 apt-get
如果是 alpine 那即是 apk

3.1 安装python3环境

  1. alpine系统使用apk命令安装
cd /etc/apk/
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/main/" > repositories
echo "https://mirrors.ustc.edu.cn/alpine/v3.6/community/" >> repositories

在这里插入图片描述

  1. 更新 apk 源:apk update
apk update

在这里插入图片描述

  1. 输入 apk add python3 安装python环境
apk add python3
  1. 更新pip3:pip3 install --upgrade pip
pip3 install --upgrade pip

# 验证python环境
python3 -V
pip3 -V

在这里插入图片描述

3.2 安装python3所需要的三方库

1.上传allure压缩包到容器当中

# 从宿主机拷贝文件到容器当中
	docker cp /Users/songpeilun/allure-2.13.0.zip 5183549dcdb6:/
说明:
	/Users/songpeilun/allure-2.13.0.zip	# 宿主机文件全路径
	1c9a4d73d8f5:/zh_work  # 容器id:容器的目录

# 解压缩
unzip allure-2.13.0.zip # 文件名

2.安装

pip3 install base64-test0926==1.0.0
pip3 install PyMySQL==1.0.2
pip3 install pytest==6.2.3
pip3 install python-jenkins==1.7.0
pip3 install redis==3.5.3
pip3 install requests==2.25.1
pip3 install SQLAlchemy==1.4.10
pip3 install urllib3==1.26.4
pip3 install xlrd==1.2.0
pip3 install PyYAML==6.0
pip3 install selenium==3.141.0
pip3 install Flask==2.0.2
pip3 install Flask-BasicAuth==0.2.0
pip3 install Flask-Cors==3.0.10
pip3 install Flask-HTTPAuth==4.5.0
pip3 install Flask-Migrate==2.7.0
pip3 install Flask-Script==2.0.6
pip3 install Flask-SQLAlchemy==2.5.1
pip3 install allure-pytest==2.8.40
pip3 install allure-python-commons==2.8.40

最后2个需要将 Allure 解压后在进行安装,不然会报错

3.输入 pip3 list 查看三方库是否安装成功
在这里插入图片描述

打开本地命令窗口,将本地文件拷贝到容器中 测试

docker cp 本地路径和文件 docker id:/容器目录
docker cp /Users/zhang/PycharmProjects/test.zip f27e05f11728:/

3.2 Jenkins及项目配置

Jenlins添加allure插件
系统管理–插件管理–可选插件搜索allure添加
在这里插入图片描述
在这里插入图片描述

1.新建项目

在这里插入图片描述
2.添加gitlab的账户信息
在这里插入图片描述
在这里插入图片描述
3.构建触发配置
以我的项目为例 每天早上8点运行(H代表分钟,服务区空闲的时候运行,不是整点)每次构建之前先清空上次构建的数据缓存

0 14-18/1 * * 1-5 (每周五,下午2点到6点每小时整点运行一次)
https://tool.lu/crontab/ 在线工具
在这里插入图片描述

在这里插入图片描述

4.构建信息配置

在这里插入图片描述

5.构建后操作
这一步比较关键,有很多同学 构建完成后打开报告出现没有数据的情况 都是这一步出现的问题!!!
在这里插入图片描述
最后附上一份定时运行的报告数据
到这里就已经完成安装了。后面会介绍将配置好的容器打包上传到自己的docker上
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6. 踩坑
实践的时候难免会碰到各种各样的问题,这里把我遇到的问题总结一下。
(6.1)镜像当中确少greenlet 插件
先查看python3 pip3的安装路径是否有greenlet文件目录
在这里插入图片描述
然后进入 /usr/lib/python3.6/site-packages 文件夹,这里面都是python3所需要的环境

将这两个文件放进去(从宿主机拷贝到容器的这个目录当中)下载 greenlet 密码 48n2
拷贝完之后输入pip3 list 查看是不是已经有该插件了,然后在去执行刚刚安装报错的插件 使用pip3 install 库名称

(6.2)提示找不到文件 command not found
使用绝对路径去运行

(6.3)github拉取代码失败
账号和密码正确,ssh密匙没有问题 第一次拉取成功,后面拉取一直失败
在这里插入图片描述

连接github的时候选择的是ssh 但是在配置url连接的时候选择的是https所有会导致失败 使用ssh拉取代码显示成功git@github.com:xxx/zh-cnProject.git 格式类型一定要相对应

(6.4)jenkins时间与本地时间不一致
启动jenkins容器的时候添加-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai
在这里插入图片描述
(6.5)飞书通知报告为空
在这里插入图片描述
在这里插入图片描述
解决方法 查看jenkins allure report配置
在这里插入图片描述

码字不易,阅读或复制完了,点个赞!谢谢

docker pull songpeilun/pythonautomation:1.0.1
(包含封装好的python3环境及依赖环境,下载直接启动配置项目即可)

  • 15
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
搭建一个接口自动化测试框架可以使用以下工具和技术: 1. Python:作为主要开发语言,可以使用Python来编写测试脚本和测试用例。 2. Pytest:一款功能强大的Python测试框架,可以用于编写和运行测试用例,并提供丰富的断言和报告功能。 3. Allure:一个开源的测试报告生成工具,可以生成美观且易于理解的测试报告,支持多种语言和框架。 4. Git:版本控制工具,用于管理和同步测试代码。 5. Jenkins:一个持续集成和持续交付工具,可以自动化运行测试用例并生成测试报告。 6. Docker:容器化平台,可以用于创建和管理测试环境,提供一致的运行环境。 下面是搭建接口自动化测试框架的步骤: Step 1: 创建项目结构 在本地创建一个目录作为项目根目录,然后在根目录下创建以下子目录: - `tests`:存放测试脚本和测试用例; - `reports`:存放测试报告; - `config`:存放配置文件; - `utils`:存放一些工具类和函数。 Step 2: 编写测试用例 在`tests`目录下编写测试脚本和测试用例。可以使用Pytest来组织和执行测试用例,使用断言来验证测试结果。 Step 3: 配置Allure报告 在`config`目录下创建一个`pytest.ini`文件,配置Allure报告的相关参数,例如报告保存路径、报告标题等。 Step 4: 运行测试用例 使用Pytest运行测试用例,并生成Allure报告。可以使用命令行或者集成到Jenkins中进行自动化执行。 Step 5: 集成Git和Jenkins 将项目代码托管到Git仓库中,并在Jenkins中配置相关任务,使其在代码提交后自动触发测试用例的运行和报告的生成。 Step 6: 创建Docker镜像(可选) 使用Docker将测试环境打包成镜像,方便部署和维护。 一些可能出现的问题和解决方法: 1. 安装依赖:在搭建过程中,可能会遇到安装依赖包的问题。可以使用pip来安装所需的Python包,并注意版本兼容性。 2. 配置问题:在配置AllureJenkins时,可能会遇到配置不正确或缺少必要参数的问题。可以参考官方文档或者搜索解决方案来解决这些问题。 3. 报告生成失败:如果生成Allure报告失败,可以检查相关依赖是否安装正确,以及路径和权限是否设置正确。 4. 测试环境问题:如果测试用例在不同环境中运行时出现问题,可以考虑使用Docker来创建一致的测试环境,或者在测试用例中添加环境适配代码。 相关问题: 1. 除了Allure,还有哪些常用的测试报告生成工具? 2. 如何在Pytest中使用断言来验证测试结果? 3. 如何在Jenkins中配置任务来触发自动化测试? 4. 除了接口自动化测试,还有哪些类型的自动化测试可以使用Python实现?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Song_Lun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值