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