当前位置: 首页 > news >正文

基于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

相关文章:

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

pytest搭建自动化测试环境&#xff08;dockerpytestjenkinsallure&#xff09; 这里我以ubuntu18为例 如果有docker环境&#xff0c;可以直接拉取我打包好的镜像docker pull ziyigun/jenkins:v1.0 1 搭建Docker 1.1 安装docker # 配置docker安装环境 sudo apt-get install ap…...

Debian 10驱动Broadcom 无线网卡

用lspci命令查询无线网卡品牌&#xff1a; 运行下面代码后&#xff0c;重启即可。 apt-get install linux-image-$(uname -r|sed s,[^-]*-[^-]*-,,) linux-headers-$(uname -r|sed s,[^-]*-[^-]*-,,) broadcom-sta-dkms...

系统架构设计师---2018年下午试题1分析与解答(试题二)

2018年下午试题1分析与解答 试题二 阅读以下关于软件系统建模的叙述,在答题纸上回答问题 1 至问题 3。 【说明】 某公司欲建设一个房屋租赁服务系统,统一管理房主和租赁者的信息,提供快捷的租赁服务。本系统的主要功能描述如下: 1. 登记房主信息。记录房主的姓名、住址…...

移远通信推出一站式Matter解决方案,构建智能家居开放新生态

近日&#xff0c;全球领先的S物联网整体解决方案供应商移远通信宣布&#xff0c;正式推出全新Matter解决方案&#xff0c;从模组、APP、平台、认证、生产五大层面为客户提供一站式服务&#xff0c;赋能智能家居行业加快融合发展。 过去十年&#xff0c;得益于物联网生态的发展&…...

文本挖掘 day5:文本挖掘与贝叶斯网络方法识别化学品安全风险因素

文本挖掘与贝叶斯网络方法识别化学品安全风险因素 1. Introduction现实意义理论意义提出方法&#xff0c;目标 2. 材料与方法2.1 数据集2.2 数据预处理2.3 关键字提取2.3.1 TF-IDF2.3.2 改进的BM25——BM25WBM25BM25W 2.3.3 关键词的产生(相关系数) 2.4 关联规则分析2.5 贝叶斯…...

laravel框架中批量更新数据

在php框架中 tp中就有批量更新封装好的 SaveAll 在laravel中有批量插入没有批量更新操作;因此我们可以自己去封装一个 然后批量进行更新操作 封装参考代码: /*** 批量更新** param $tableName 表名称* param string $pk 更新的字段* param array $multipleData 要更新的数据*…...

【Linux】POSIX信号量和基于环形队列的生产消费者模型

目录 写在前面的话 什么是POSIX信号量 POSIX信号量的使用 基于环形队列的生产消费者模型 写在前面的话 本文章主要先介绍POSIX信号量&#xff0c;以及一些接口的使用&#xff0c;然后再编码设计一个基于环形队列的生产消费者模型来使用这些接口。 讲解POSIX信号量时&#x…...

Rust之编写自动化测试

1、测试函数的构成&#xff1a; 在最简单的情形下,Rust中的测试就是一个标注有test属性的函数。属性 (attribute)是一种用于修饰Rust代码的元数据。只需要将#[test]添加到关键字fn的上一行便可以将函数转变为测试函数。当测试编写完成后,我们可以使用cargo test命令来运行测试…...

【网络】网络层——IP协议

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 网络层中&#xff0c;IP协议首部和有效载荷组成的完整数据称为数据报。 IP协议 &#x1f349;TCP和IP的…...

动力电池系统介绍(十三)——高压互锁(HVIL)

动力电池系统介绍&#xff08;十三&#xff09; 一、高压互锁梗概1.1 高压互锁原理1.1 高压互锁内部结构1.2 高压互锁分类1.3 高压互锁原则 二、高压互锁常见故障2.1 高压互锁开关失效2.2 端子退针导致开路2.3 互锁端子对地短路2.4 动力电池内部故障 三、高压互锁故障排查 一、…...

C# 一种求平方根的方法 立方根也可以 极大 极小都可以

不知道研究这些干啥&#xff0c;纯纯的浪费时间。。。 public static double TQSquare(double number){Random random1 new Random(DateTime.Now.Millisecond);double x1 0, resultX1 0, diff 9999999999, diffTemporary 0;for (int i 0; i < 654321; i){if (random1…...

爬虫逆向实战(十二)--某交易所登录

一、数据接口分析 主页地址&#xff1a;某交易所 1、抓包 通过抓包可以发现登录是通过表单提交的 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块&#xff0c;可以发现有两个加密参数password和execution 请求头是否加密&#xff1f; 无响应是…...

【C++入门到精通】C++入门 —— list (STL)

阅读导航 前言一、list简介1.概念2.特点 二、list的使用1.list的构造2.常见的操作⭕std::list类型的增、删、查、改 三、list与vector的对比温馨提示 前言 文章绑定了VS平台下std::list的源码&#xff0c;大家可以下载了解一下&#x1f60d; 前面我们讲了C语言的基础知识&…...

SOLIDWORKS有限元分析

SOLIDWORKS是一款广泛使用的三维计算机辅助设计软件&#xff0c;同时它还具有强大的有限元分析功能。有限元分析是一种工程分析方法&#xff0c;它将复杂的实体分解成许多小的有限元素&#xff0c;以便对其进行数学建模和分析。SOLIDWORKS的有限元分析功能可以帮助工程师预测和…...

Kotlin Flow 冷流

协程&#xff1a;Flow 1、Flow是什么&#xff1f; 处理异步事件流可取消&#xff1a;通过取消协程取消Flow组合操作符&#xff1a;复杂逻辑处理缓冲和背压&#xff1a;发送和接收时用不同速度处理&#xff0c;实现流量控制、避免数据丢失 2、传统事件处理方案&#xff1a;同…...

Android Socket使用TCP协议实现手机投屏

本节主要通过实战来了解Socket在TCP/IP协议中充当的是一个什么角色&#xff0c;有什么作用。通过Socket使用TCP协议实现局域网内手机A充当服务端&#xff0c;手机B充当客户端&#xff0c;手机B连接手机A&#xff0c;手机A获取屏幕数据转化为Bitmap&#xff0c;通过Socket传递个…...

【云原生,k8s】Helm应用包管理器介绍

目录 一、为什么需要Helm&#xff1f; &#xff08;一&#xff09;Helm介绍 &#xff08;二&#xff09;Helm有3个重要概念&#xff1a; &#xff08;三&#xff09;Helm特点 二、Helm V3变化 &#xff08;一&#xff09;架构变化 &#xff08;二&#xff09;自动创建名…...

两个内网之间的linux服务器如何互相登录?快解析内网穿透

如果两个内网之间的linux服务器需要互相登录&#xff0c;或需要互相访问内网某个端口&#xff0c;担忧没有公网IP&#xff0c;可以使用的方法有 ngrok, 但并不方便&#xff0c;我们只需两条 SSH 命令即可。 SSH 内网端口转发实战SSH 内网端口转发实战 先给出本文主角&…...

sql server 存储过程 set ansi_nulls set quoted_identifier,out 、output

SQL-92 标准要求在对空值(NULL) 进行等于 () 或不等于 (<>) 比较时取值为 FALSE。 当 SET ANSI_NULLS 为 ON 时&#xff0c;即使 column_name 中包含空值&#xff0c;使用 WHERE column_name NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值&#xff0c…...

1046:判断一个数能否同时被3和5整除

【题目描述】 判断一个数n 能否同时被3和5整除&#xff0c;如果能同时被3和5整除输出YES&#xff0c;否则输出NO。 【输入】 输入一行&#xff0c;包含一个整数n。&#xff08; -1,000,000 < n < 1,000,000&#xff09; 【输出】 输出一行&#xff0c;如果能同时被3…...

优漫动游零基础如何学习好UI设计

智能时代的来临&#xff0c;很多企业都越来越注重用户体验这一块&#xff0c;想要有一个吸引用户的好页面&#xff0c;UI设计师岗位不可或缺&#xff0c;如今越来越多的人想要学习UI设计技术&#xff0c;那么对于零基础小白如何学习好UI设计呢? 零基础小白如何学习好UI设计…...

Android岗位技能实训室建设方案

一 、系统概述 Android岗位技能作为新一代信息技术的重点和促进信息消费的核心产业&#xff0c;已成为我国转变信息服务业的发展新热点&#xff1a;成为信息通信领域发展最快、市场潜力最大的业务领域。互联网尤其是移动互联网&#xff0c;以其巨大的信息交换能力和快速渗透能力…...

Mysql系列:Mysql5.7编译安装--系统环境:Centos7 / CentOS9 Stream

Mysql系列&#xff1a;Mysql5.7编译安装 系统环境&#xff1a;Centos7 / CentOS9 Stream 1&#xff1a;下载mysql源码包 https://dev.mysql.com/downloads/mysql/5.7.htmldownloads 选择MySQL Community Server>source_code>Generic Linux (Architecture Independent)…...

Docker容器与虚拟化技术:Dockerfile部署LNMP

目录 一、理论 1.LNMP架构 2.背景 3.Dockerfile部署LNMP 3.构建Nginx镜像 4.构建MySQL容器 5.构建PHP镜像 6.启动 wordpress 服务 二、实验 1.环境准备 2.构建Nginx镜像 3.构建MySQL容器 4.构建PHP镜像 5.启动 wordpress 服务 三、问题 1.构建nginx镜像报错 …...

elementUI date-picker 日期格式转为 2023/08/08格式

<el-form-item label"基线日期:" prop"baselineDate"><el-date-pickertype"date"v-model"form.baselineDate"placeholder"选择日期"format"yyyy/MM/dd"change"(date, type) > changeTime(date, …...

生成式 AI 在泛娱乐行业的应用场景实践 – 助力风格化视频内容创作

感谢大家阅读《生成式 AI 行业解决方案指南》系列博客&#xff0c;全系列分为 4 篇&#xff0c;将为大家系统地介绍生成式 AI 解决方案指南及其在电商、游戏、泛娱乐行业中的典型场景及应用实践。目录如下&#xff1a; 《生成式 AI 行业解决方案指南与部署指南》《生成式 AI 在…...

elementPlus——图标引入+批量注册全局组件——基础积累

因为我们要根据路由配置对应的图标&#xff0c;也要为了后续方便更改。因此我们将所有的图标注册为全局组件。&#xff08;使用之前将分页器以及矢量图注册全局组件的自定义插件&#xff09;&#xff08;所有图标全局注册的方法element-plus文档中已给出&#xff09; 全局注册…...

国标GB28181安防视频平台EasyGBS显示状态正常,却无法播放该如何解决?

国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台&#xff0c;可实现的视频功能包括&#xff1a;实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。国标GB28181视频监控平台部署简单、可拓展性强&#xff0c;支持将…...

TIOVX:opencv的Mat类图像零拷贝转为openvx的vx_image格式,通过Not节点无效果问题记录

问题描述 代码中&#xff0c;创建了一个opencv的Mat图像(并打印了所有的像素值)&#xff0c;然后通过vxCreateImageFromHandle函数将Mat图像转为了vx_image图像(通过映射的方式打印了所有的像素值&#xff0c;通过日志可以看出与之前打印相同)。然后创建graph&#xff0c;将其作…...

变压器故障诊断(python代码,逻辑回归/SVM/KNN三种方法同时使用,有详细中文注释)

视频效果&#xff1a;变压器三种方法下故障诊断Python代码_哔哩哔哩_bilibili代码运行要求&#xff1a;tensorflow版本>2.4.0,Python>3.6.0即可&#xff0c;无需修改数据路径。 1.数据集介绍&#xff1a; 采集数据的设备照片 变压器在电力系统中扮演着非常重要的角色。…...