基于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.mzph.cn/news/41143.shtml

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

相关文章

润和软件HopeStage操作系统正式上架阿里云、华为云、腾讯云商店

近日&#xff0c;润和软件HopeStage操作系统正式上架阿里云、华为云、腾讯云商店。 随着科技的发展&#xff0c;云服务成为现代社会信息和资讯的交换、共享、存储、检索、应用等重要方式。阿里云、华为云、腾讯云作为我国云服务市场三巨头&#xff0c;其云商店产品全面覆盖云、…

Nvidia Jetson 编解码开发(1)介绍

前言 由于项目需要,需要开发Jetson平台的硬件编解码; 优化CPU带宽,后续主要以介绍硬件编解码为主 1.Jetson各平台编解码性能说明 如下是拿了Jetson nano/tx2/Xavier等几个平台做对比; 这里说明的编解码性能主要是对硬件来说的 2. 编解码实现说明 2.1 软件编解码 优点:…

Idea中隐藏指定文件或指定类型文件

Setting ->Editor ->Code Style->File Types → Ignored Files and Folders输入要隐藏的文件名&#xff0c;支持*号通配符回车确认添加

Windows权限维持—自启动映像劫持粘滞键辅助屏保后门WinLogon

Windows权限维持—自启动&映像劫持&粘滞键&辅助屏保后门&WinLogon 1. 前置2. 自启动2.1. 路径加载2.1.1. 放置文件2.1.2. 重启主机 2.2. 服务加载2.2.1. 创建服务2.2.2. 查看服务2.2.3. 重启主机 2.3. 注册表加载2.3.1. 添加启动项2.3.2. 查看注册表2.3.3. 重启…

YOLOv5基础知识入门(7)— NMS(非极大值抑制)原理解析

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。NMS是指非极大值抑制&#xff08;non maximum suppression&#xff09;&#xff0c;它是一种常用于物体检测任务的算法。在物体检测中&#xff0c;通常会有多个预测框&#xff08;bounding box&#xff09;被提议出来&…

机器学习深度学习——transformer(机器翻译的再实现)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——自注意力和位置编码&#xff08;数学推导代码实现&#xff09; &#x1f4da;订阅专栏&#xff1a;机器…

【论文阅读】 Model Sparsity Can Simplify Machine Unlearning

Model Sparsity Can Simplify Machine Unlearning 背景主要内容Contribution Ⅰ&#xff1a;对Machine Unlearning的一个全面的理解Contribution Ⅱ&#xff1a;说明model sparsity对Machine Unlearning的好处Pruning方法的选择sparse-aware的unlearning framework Experiments…

JetBrains IDE远程开发功能可供GitHub用户使用

JetBrains与GitHub去年已达成合作&#xff0c;提供GitHub Codespaces 与 JetBrains Gateway 之间的集成。 GitHub Codespaces允许用户创建安全、可配置、专属的云端开发环境&#xff0c;此集成意味着您可以通过JetBrains Gateway使用在 GitHub Codespaces 中运行喜欢的IDE进行…

VScode搭建Opencv(C++开发环境)

VScode配置Opencv 一、 软件版本二 、下载软件2.1 MinGw下载2.2 Cmake下载2.3 Opencv下载 三、编译3.1 cmake-gui3.2 make3.3 install 四、 VScode配置4.1 launch.json4.2 c_cpp_properties.json4.3 tasks.json 五、测试 一、 软件版本 cmake :cmake-3.27.2-windows-x86_64 Mi…

JAVA基础知识(一)——Java语言描述、变量和运算符

TOC(Java语言描述、变量和运算符) 一、JAVA语言描述 1.1 java语言描述 JDK、JRE、jVM三者之间的关系&#xff0c;以及JDK、JRE包含的主要结构有哪些&#xff1f; JDKJre java的开发工具&#xff08;javac.exe java.exe javadoc.exe&#xff09; jre jvmjava的核心类库 为什…

【JavaEE基础学习打卡03】Java EE 平台有哪些内容?

目录 前言一、Java EE平台说明二、Java EE平台容器及组件1.平台容器2.平台组件 三、JavaEE平台API服务1.API服务概览2.平台API 总结 前言 &#x1f4dc; 本系列教程适用于Java Web初学者、爱好者&#xff0c;小白白。我们的天赋并不高&#xff0c;可贵在努力&#xff0c;坚持不…

使用CLI添加磁盘到VM

登录 https://portal.azure.com/#home&#xff0c;点击右上角的控制台图标 &#xff0c;打开CLI 在控制台中输入如下指令&#xff0c;在NetworkWatcherRG创建一个名字为TEST的虚拟机&#xff0c;使用的镜像是Win2019datacenter&#xff0c;username是aaa,password是1234567890A…

mysql的快速复习 和一些思考记录

数据库设计 第一范式&#xff1a;有主键&#xff0c;具有原子性&#xff0c;字段不可分割 数据库表中不能出现重复记录&#xff0c;每个字段是原子性的不能再分 关于第一范式&#xff0c;每一行必须唯一&#xff0c;也就是每个表必须有主键。 每一列不可再分&#xff01;&#…

okhttp源码简单流程分析

拦截器详细解析可以看大佬简书 "https://www.jianshu.com/p/6fac73f7570f"和 “https://www.jianshu.com/p/3c740829475c” okhttp请求流程 1&#xff1a;OkHttpClient okHttpClient new OkHttpClient.Builder() 构建一个okhttpClient对象&#xff0c;传入你想传入的…

vector使用以及模拟实现

vector使用以及模拟实现 vector介绍vector常用接口1.构造2.迭代器3.容量4.增删查改5.练习 vector模拟实现1.迭代器失效2.反向迭代器3.完整代码 vector介绍 和我们原来讲的string不同&#xff0c;vector并不是类&#xff0c;是一个类模板&#xff0c;加<类型>实例化以后才…

主机防护的重要性和方式

01 主机防护的重要性 主机防护是网络安全的重要组成部分。在互联网时代&#xff0c;网络攻击成为了一种常见的威胁&#xff0c;而主机防护则是保护计算机系统免受网络攻击的重要手段。 主机防护可以防范各种网络攻击&#xff0c;如病毒、木马、黑客攻击等&#xff0c;从而保…

气象监测站:用科技感知气象变化

气象监测站是利用科学技术感知当地小气候变化情况的气象观测仪器&#xff0c;可用于农业、林业、养殖业、畜牧业、环境保护、工业等多个领域&#xff0c;提高对环境数据的利用率&#xff0c;促进产业效能不断提升。 气象监测站主要由气象传感器、数据传输系统、电源系统、支架…

Linux debian12解压和压缩.rar文件教程

一、Debian12安装rar命令 sudo apt install rar二、使用rar软件 1.解压文件 命令格式&#xff1a; rar x 文件名.rar实力测试&#xff1a; [rootdoudou tmp]# rar x test.rar2.压缩文件 test是一个文件夹 命令格式&#xff1a; rar a 文件名.rar 文件夹名实例测试&#x…

centos7 yum获取软件所有依赖包 创建本地yum源 yum离线安装软件

centos7 yum获取软件所有依赖包 创建本地yum源 离线安装软件 1、以安装docker 20.10为例2、centos7 yum获取docker 20.10 所有依赖包3、创建本地docker yum源4、yum使用本地docker源 离线安装docker 1、以安装docker 20.10为例 参考链接&#xff1a; 添加docker 清华软件源 y…

git环境超详细配置说明

一&#xff0c;简介 在git工具安装完成之后&#xff0c;需要设置一下常用的配置&#xff0c;如邮箱&#xff0c;缩写&#xff0c;以及git commit模板等等。本文就来详细介绍些各个配置如何操作&#xff0c;供参考。 二&#xff0c;配置步骤 2.1 查看当前git的配置 git conf…