基于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
相关推荐
朝九晚五ฺ7 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
Kkooe8 小时前
GitLab|数据迁移
运维·服务器·git
久醉不在酒9 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
意疏10 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
虚拟网络工程师10 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb
墨鸦_Cormorant10 小时前
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
redis·nginx·docker
BLEACH-heiqiyihu10 小时前
RedHat7—Linux中kickstart自动安装脚本制作
linux·运维·服务器
Code_Artist10 小时前
Docker镜像加速解决方案:配置HTTP代理,让Docker学会科学上网!
docker·云原生·容器
MXsoft61811 小时前
华为服务器(iBMC)硬件监控指标解读
大数据·运维·数据库
19004312 小时前
linux6:常见命令介绍
linux·运维·服务器