基于docker搭建pytest自动化测试环境(docker+pytest+jenkins+allure)

pytest搭建自动化测试环境(docker+pytest+jenkins+allure)

这里我以ubuntu18为例

  • 如果有docker环境,可以直接拉取我打包好的镜像
  • docker pull ziyigun/jenkins:v1.0

1 搭建Docker

1.1 安装docker

# 配置docker安装环境
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 添加阿里的GPG秘钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -# 添加阿里镜像源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"# 更新apt
sudo apt-get update# 查询docker有哪些版本 第二列是版本号,第三列是存储库的名称。
apt-cache madison docker-ce# 安装最新版本
sudo apt-get install -y docker-ce#或者安装指定版本(根据操作系统版本来安装对应docker版本)
# sudo apt-get install -y docker-ce=5:19.03.1~3-0~ubuntu-cosmic# 查看docker版本
sudo docker version

1.2 配置镜像加速

sudo vi /etc/docker/daemon.json
# 保存如下内容
{"registry-mirrors": ["https://ooq07srv.mirror.aliyuncs.com""https://registry.cn-hangzhou.aliyuncs.com","http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ] 
}# 重启docker验证是否成功
sudo service docker restart
#或者
sudo systemctl restart docker

bug1:ExecStart=/usr/bin/dockerd -H fd://

  • 如果发现docker启动或者重启报错:
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)

解决办法:
方法一:

cp /etc/docker/daemon.json /etc/docker/daemon.conf
sudo systemctl restart docker

方法二:

sudo edit /usr/lib/systemd/system/docker.service
# 原来的内容
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 改为如下的内容
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph /usr/local/docker# 重启docker
systemctl daemon-reload
systemctl restart docker

bug2:mediaType in manifest should be …

  • 如果发现报错:
    mediaType in manifest should be ‘application/vnd.docker.distribution.manifest.v2+json’ not ‘application/vnd.oci.image.manifest.v1+json’

解决办法:

方法一:

# 升级Docker版本: 您可以尝试升级Docker到支持OCI格式的版本
sudo apt-get purge docker-ce docker-ce-cli containerd.io
# 安装最新的docker版本
sudo apt-get install -y docker-ce

方法二:

# Docker Registry API v2
docker pull --disable-content-trust jenkins/jenkins

1.3 卸载docker

如果使用完成之后想要卸载docker

# 卸载docker
sudo apt-get purge docker-ce docker-ce-cli containerd.io

2 搭建Jenkins

2.1 拉取并运行Jenkins镜像

# 拉取最新稳定版的jenkins
docker pull jenkins/jenkins:lts# 创建目录,挂载jenkins信息
mkdir -p /var/jenkins_node# 设置目录权限
chmod -R 777 /var/jenkins_node# 创建jenkins容器
docker run -d -uroot -p 80:8080 --name jenkins -v /var/jenkins_node:/var/jenkins_home jenkins/jenkins:lts
#说明:-d: 指定容器运行于前台还是后台,默认为false
#-u: 指定容器的用户-p: 指定容器暴露的端口,主机的80端口映射容器的8080端口
#--name: 容器名称-v: 给容器挂载存储卷,挂载到容器的某个目录# 查看容器运行状态
docker ps | grep jenkins# 进入jenkins容器内部
docker exec -it -uroot jenkins bash

2.2 浏览器访问Jenkins并配置

在浏览器中输入宿主机ip,即可访问到jenkins页面,如:10.16.53.10

# 查看jenkins默认密码(在容器外部执行命令)
docker exec jenkins tail /var/jenkins_home/secrets/initialAdminPassword

然后根据自己的需求来选择是否需要安装Jenkins需要的插件(我这里选择接受推荐的插件):
在这里插入图片描述

完成之后,创建一个用户,设置用户名密码、邮箱等

  • 修改时区
    在这里插入图片描述

3 配置Python

在jenkins容器中,执行如下命令:

3.1 更新apt软件包

# 获取最新的软件包
apt-get update
#升级已安装的软件包
apt-get upgrade  
#提前安装,以便接下来的配置操作
apt-get -y install gcc automake autoconf libtool make
apt-get -y install make* 
apt-get -y install zlib*
apt-get -y install openssl libssl-dev
apt-get install sudo

3.2 下载python3源码

cd /usr/local/src
# 安装wget命令
apt-get install wget
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
tar -zxvf Python-3.6.8.tgz 
mv Python-3.6.8 py3.6
cd py3.6

3.3 编译并配置环境变量

# 在/usr/local/src/py3.6目录执行以下命令
./configure --prefix=/var/jenkins_home/python3 --with-ssl
make
make install#添加python3软链接ln -s /var/jenkins_home/python3/bin/python3 /usr/bin/python3# rm -f /usr/bin/python3即可删除软链接#添加pip3软链接
# 将/var/jenkins_home/python3/bin/pip3链接到/usr/bin/pip3
ln -s /var/jenkins_home/python3/bin/pip3 /usr/bin/pip3# 查看安装结果
# 输入python3,查看是否有对应信息输出
python3
# 输入exit()即可退出python的交互页面

在这里插入图片描述

3.4 安装项目所需python包依赖

# 在python根目录下生成requirements.txt(指定python项目所依赖的包)
pip3 freeze > requirements.txt  
# 将requirements.txt上传到主机
docker cp requirements.txt jenkins:/usr/local/src
# 安装所需的依赖到jenkins中
pip3 install -r requirements.txt  

4 安装allure依赖:输出测试报告

# 退出jenkins容器,执行下面命令
# 官网地址:https://github.com/allure-framework/allure2/releases  建议选择最新版本下载
# 下载成功之后上传到服务器 或者直接通过wget命令下载也可以
wget https://github.com/allure-framework/allure2/releases/download/2.23.1/allure-2.23.1.zip
docker cp allure-2.23.1.zip jenkins:/usr/local/src# 重新进入jenkins容器中执行下面命令
docker exec -itu root jenkins bash# 解压
unzip allure-2.23.1.zipmv allure-2.23.1 allure# /var/jenkins_home/python3/bin/python3.6 
#配置python和allure环境
cat >> /root/.bashrc << "EOF"
export PATH=/usr/local/src/allure/bin:$PATH
export PATH=/usr/local/src/py3.6/bin:$PATH
EOF# 更新环境变量配置
source /root/.bashrc# 验证环境变量
allure --version  

5 安装Java环境:allure需要有java环境

运行allure需要java环境

cd /usr/local
wget https://download.java.net/openjdk/jdk8u43/ri/openjdk-8u43-linux-x64.tar.gztar -xzf openjdk-8u43-linux-x64.tar.gz -C /usr/local/src/
cd /usr/local/src
mv java-se-8u43-ri java8# 配置Java环境变量
echo "export JAVA_HOME=/usr/local/src/java8" >> /root/.bashrc
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /root/.bashrcsource /root/.bashrc
# 验证Java安装
java -version

在这里插入图片描述

6 安装pytest

pip3 install pytest
ln -s /var/jenkins_home/python3/bin/pytest /usr/bin/pytest
export PATH=/usr/local/src/pytest/bin:$PATH
source /root/.bashrc
# 输入pytest查看是否安装成功

7 配置jenkins中的插件和git地址

7.1安装allure插件

在这里插入图片描述

7.2 设置本地jenkins容器中allure的可执行文件地址

在这里插入图片描述

7.3 新建jenkins项目(项目风格可以选择自由风格)

①Item- 新建- 选择Freestyle project - 填写项目名称
在这里插入图片描述

②填写项目描述信息,并配置源码管理(配置git仓库地址和凭证)
在这里插入图片描述

编写好自动化测试脚本(python代码)后,上传到git仓库中

  • 例如:https://gitee.com/Zifasdfa/pytest.git

③配置构建步骤
在这里插入图片描述④添加构建的步骤(生成allure报告)
在这里插入图片描述

在allure report模块下,点击高级

在这里插入图片描述
点击应用,然后点击保存

⑤构建任务,点击立即构建
在这里插入图片描述
⑥构建结果
在这里插入图片描述

点击allure report,跳转用例输出界面,查看具体测试结果信息

在这里插入图片描述

根据需求,可以将本地已经部署好的jenkins容器打包本地镜像上传到dockerhub

docker tag jenkins/jenkins:lts ziyigun/jenkins:v1.0
docker login
# 输入用户名和密码
# 推送到dockerhub仓库
docker push ziyigun/jenkins:v1.0

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 系统编程拾遗

Linux 系统编程拾遗 进程的创建 进程的创建 fork()、exit()、wait()以及execve()的简介 创建新进程&#xff1a;fork()

WebRTC音视频通话-WebRTC视频自定义RTCVideoCapturer相机

WebRTC音视频通话-WebRTC视频自定义RTCVideoCapturer相机 在之前已经实现了WebRTC调用ossrs服务&#xff0c;实现直播视频通话功能。但是在使用过程中&#xff0c;RTCCameraVideoCapturer类提供的方法不能修改及调节相机的灯光等设置&#xff0c;那就需要自定义RTCVideoCaptur…

使用chatgpt将中文翻译成学术英语

使用chatgpt将中文翻译成学术英语 方式一 使用chatgpt翻译 你是一个英文学术论文写作专家&#xff0c;以下是一篇学术论文中的一段内容&#xff0c;请先对其进行翻译为英文&#xff0c;并将此部分润色以满足学术标准&#xff0c;提高语法、清晰度和整体可读性&#xff0c;给…

基于traccar快捷搭建gps轨迹应用

0. 环境 - win10 虚拟机ubuntu18 - i5 ubuntu22笔记本 - USB-GPS模块一台&#xff0c;比如华大北斗TAU1312-232板 - 双笔记本组网设备&#xff1a;路由器&#xff0c;使得win10笔记本ip&#xff1a;192.168.123.x&#xff0c;而i5笔记本IP是192.168.123.215。 - 安卓 手机 1.…

画质提升+带宽优化,小红书音视频团队端云结合超分落地实践

随着视频业务和短视频播放规模不断增长&#xff0c;小红书一直致力于研究&#xff1a;如何在保证提升用户体验质量的同时降低视频带宽成本&#xff1f; 在近日结束的音视频技术大会「LiveVideoStackCon 2023」上海站中&#xff0c;小红书音视频架构视频图像处理算法负责人剑寒向…

LVS-DR集群(一台LVS,一台CIP,两台web,一台NFS)的构建以及LVS-DR模式工作原理和特点

一.LVS-DR工作模式原理和特点 1.工作模式 2.模式特点 二.构建环境 1.五台关闭防火墙&#xff0c;关闭selinux&#xff0c;拥有固定IP&#xff0c;部署有http服务的虚拟机&#xff0c;LVS设备下载ipvsadm工具&#xff0c;NFS 设备需要下载rpcbind和nfs-utils 2.实现功能 3…

MISRA 2012学习笔记(3)-Rules 8.4-8.7

文章目录 Rules8.4 字符集和词汇约定(Character sets and lexical conventions)Rule 4.1 八进制和十六进制转译序列应有明确的终止识别标识Rule 4.2 禁止使用三字母词(trigraphs) 8.5 标识符(Identifiers)Rule 5.1 外部标识符不得重名Rule 5.2 同范围和命名空间内的标识符不得重…

跟着美团学设计模式(感处)

读了着篇文章之后发现真的是&#xff0c;你的思想&#xff0c;你的思维是真的比比你拥有什么技术要强的。 注 开闭原则 开闭原则&#xff08;Open-Closed Principle&#xff09;是面向对象设计中的基本原则之一&#xff0c;它的定义是&#xff1a;一个软件实体应该对扩展开放…

提升大数据技能,不再颓废!这6家学习网站是你的利器!

随着国家数字化转型&#xff0c;大数据领域对人才的需求越来越多。大数据主要研究计算机科学和大数据处理技术等相关的知识和技能&#xff0c;从大数据应用的三个主要层面&#xff08;即数据管理、系统开发、海量数据分析与挖掘&#xff09;出发&#xff0c;对实际问题进行分析…

图像处理常见的两种拉流方式

传统算法或者深度学习在进行图像处理之前&#xff0c;总是会首先进行图像的采集&#xff0c;也就是所谓的拉流。解决拉流的方式有两种&#xff0c;一个是直接使用opencv进行取流&#xff0c;另一个是使用ffmpeg进行取流&#xff0c;如下分别介绍这两种方式进行拉流处理。 1、o…

Cesium加载ArcGIS Server4490且orgin -400 400的切片服务

Cesium在使用加载Cesium.ArcGisMapServerImageryProvider加载切片服务时&#xff0c;默认只支持wgs84的4326坐标系&#xff0c;不支持CGCS2000的4490坐标系。 如果是ArcGIS发布的4490坐标系的切片服务&#xff0c;如果原点在orgin X: -180.0Y: 90.0的情况下&#xff0c;我们可…

飞天使-jenkins进行远程linux机器修改某个文件的思路

文章目录 jenkins配置的方式jenkins中执行shell的思路 jenkins配置的方式 jenkins中执行shell的思路 下面的脚本别照抄&#xff0c;只是一个思路 ipall"$ips"# 将文本参数按行输出为变量 while IFS read -r line; doecho "$line" if [[ ! -z $line ]] &…