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

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

这里我以ubuntu18为例

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

1 搭建Docker

1.1 安装docker

bash 复制代码
# 配置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 配置镜像加速

bash 复制代码
sudo vi /etc/docker/daemon.json
bash 复制代码
# 保存如下内容
{
  "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)

解决办法:

方法一:

bash 复制代码
cp /etc/docker/daemon.json /etc/docker/daemon.conf
sudo systemctl restart docker

方法二:

bash 复制代码
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'

解决办法:

方法一:

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

方法二:

bash 复制代码
# Docker Registry API v2
docker pull --disable-content-trust jenkins/jenkins

1.3 卸载docker

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

bash 复制代码
# 卸载docker
sudo apt-get purge docker-ce docker-ce-cli containerd.io

2 搭建Jenkins

2.1 拉取并运行Jenkins镜像

bash 复制代码
# 拉取最新稳定版的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

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

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

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

  • 修改时区

3 配置Python

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

3.1 更新apt软件包

bash 复制代码
# 获取最新的软件包
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源码

bash 复制代码
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 编译并配置环境变量

bash 复制代码
# 在/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包依赖

bash 复制代码
# 在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依赖:输出测试报告

bash 复制代码
# 退出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.zip

mv 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环境

bash 复制代码
cd /usr/local
wget https://download.java.net/openjdk/jdk8u43/ri/openjdk-8u43-linux-x64.tar.gz

tar -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/.bashrc

source /root/.bashrc
# 验证Java安装
java -version

6 安装pytest

bash 复制代码
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仓库中

③配置构建步骤
④添加构建的步骤(生成allure报告)

在allure report模块下,点击高级

点击应用,然后点击保存

⑤构建任务,点击立即构建

⑥构建结果

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

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

bash 复制代码
docker tag jenkins/jenkins:lts ziyigun/jenkins:v1.0
docker login
# 输入用户名和密码
# 推送到dockerhub仓库
docker push ziyigun/jenkins:v1.0
相关推荐
七夜zippoe2 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
金刚猿3 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
JH_Kong3 小时前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
忆~遂愿4 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
Fcy6484 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满4 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠4 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9034 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技5 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀6 小时前
Linux环境变量
linux·运维·服务器