python接口自动化测试日常构建项目分享:docker+jenkins+python+allure+nginx+飞书通知(上)

一、背景

        前置条件:本地的接口自动化测试脚本调试通过,该内容本文不涉及

        本文概述:在服务器中部署python接口自动化测试所需的环境,即docker+jenkins+python+allure+nginx,因篇幅较长,jenkins的使用、测试结果的通知以及报告的分享放到下篇。

        

二、环境准备

参考文档:从0搭建属于自己的jenkins持续集成平台-阿里云开发者社区

服务器或者虚拟机。我使用的是阿里云服务器,CentOS7.6系统

推荐使用阿里云服务器,个人学习或者小团队使用,一百多块钱/年的服务器足以轻松应对:阿里云云服务器,质优价更低

三、安装Docker

使用docker来部署jenkins会简单很多。

3.1 shell远程连接上数据库,先确认当前是否已安装docker

docker --version

输入以上命令并回车,若显示了docker版本号,则说明已安装docker,否则需要先安装docker

3.2 添加docker源

先安装yum-utils包,然后才能使用yum-config-manager命令

yum install yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3.3 安装docker

yum install docker-ce

3.4 启动docker

systemctl start docker

四、部署jenkins

4.1 拉取jenkins的镜像

若下载过慢,可能需要更换docker镜像源

docker pull jenkins/jenkins

4.2 使用docker启动jenkins容器

docker run -d --name jenkins -p 9090:8080 -p 9091:9091 -v /home/jenkins_home:/var/jenkins_home -u 0 jenkins/jenkins
  • -d: 这个选项告诉 Docker 在后台运行容器,即“守护模式”。

  • --name jenkins: 指定容器的名称,即将容器命名为 "jenkins"。

  • -p 9090:8080: 指定了端口映射规则,将容器的8080端口映射到主机的9090端口上。这样,可以通过访问主机的9090端口来访问 Jenkins 服务(8080是jenkins的默认端口)。

  • -p 9091:9091: 非必填项,后续nginx需要使用到的端口,本文选择使用nginx启动测试报告服务,将容器的9091端口映射到主机的9091端口上。

  • -v /home/jenkins_home:/var/jenkins_home: 这个选项指定了容器内外的路径映射。将主机的 /home/jenkins_home 目录挂载到容器内的 /var/jenkins_home 目录上,这样可以持久化 Jenkins 的数据。

  • -u 0: 这个选项指定了容器中 Jenkins 进程运行的用户ID。-u 0 表示以 root 用户身份运行 Jenkins 进程。这是为了确保 Jenkins 进程具有足够的权限来访问容器内的目录和端口。

  • jenkins/jenkins: 这是要运行的 Docker 镜像的名称和标签。拉取的是哪个jenkins镜像,这里就使用哪个。

4.3 查看容器运行情况

4.3.1

docker ps -a

 docker ps -a是查看所有容器

 docker ps是查看当前运行中的容器其中STATUS字段表示容器的当前状态,Up 5 seconds表示该容器已运行5秒。

4.3.2 常见的STATUS值:

  • Up (运行中): 表示容器当前正在运行。

  • Exited (已停止): 表示容器已经停止运行。

  • Paused (已暂停): 表示容器处于暂停状态,即容器的所有进程被暂停。

  • Restarting (重启中): 表示容器正在重新启动。

  • Removing (移除中): 表示容器正在被移除。

  • Dead (已失效): 表示容器已经被标记为“死亡”,通常是由于 Docker 引擎在容器运行期间检测到的问题而导致的。

4.3.3 如果STATUS不是up,尝试重新启动容器

先停掉该容器,其中CONTAINER ID对应上图的2fdc6943564e

docker stop <CONTAINER ID>

然后删除(如果要彻底删除一些配置项,需要将/home下的jenkins_home文件夹删掉)

docker rm <CONTAINER ID>

确认是否已删除

docker ps -a

最后使用4.2 的docker run命令再次启动

4.4 浏览器输入<服务器ip:端口号>访问jenkins

启动命令中-p 9090:8080的9090就是访问的端口号。

注意:需要将9090及nginx用到的9091端口加入到防火墙白名单,否则会访问失败

首次访问jenkins需要输入管理员密码,管理员账号默认为admin

查看管理员账号admin的密码:

cat /home/jenkins_home/secrets/initialAdminPassword

疑问:为什么cat的密码存放路径跟jenkins页面的路径显示不一样?

答:jenkins页面展示的路径是jenkins这个容器内的,只是路径不一样,密码内容是一样的。

cat /home/jenkins_home/secrets/initialAdminPassword     #宿主机密码存放路径

cat /var/jenkins_home/secrets/initialAdminPassword         #容器内密码存放路径,需要进入容器内使用

4.5 jenkins引导页

输入正确的管理员密码后,在该页面建议选择安装推荐的插件

有安装失败的插件不用在意,选择继续 

创建管理员用户这里,我选择不创建,直接使用初始的admin账户

 实例配置-保存并完成

4.6 更新jenkins版本

安装完成后建议先将jenkins更新到最新版本,可以解决一些插件问题

五、安装python

5.1 更换下载源

这一步非必须,但可以让后续的下载快几十分钟

# 在宿主机的/etc/apt/目录下新建一个同名的源文件(与容器目录一致,方便记忆)
touch sources.list
# 编辑该文件
vim sources.list

 将以下清华源复制到sources.list文件中并保存

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware

新开一个shell窗口(以便分别在容器内外操作),进入jenkins容器内先备份一下sources.list

# 进入容器内的命令行解释器
docker exec -it jenkins /bin/bash

# 备份sources.list
cp /etc/apt/sources.list /etc/apt/sources.list.bak

将保存的sources.list复制到jenkins容器内的/etc/apt/目录下

# 在宿主机使用(退出容器命令行:exit)
docker cp /etc/apt/sources.list jenkins:/etc/apt/sources.list

5.2 安装相关依赖

 首先需要进入到jenkins容器内

docker exec -it jenkins /bin/bash

# 确认sources.list源已更新
cat /etc/apt/sources.list

更新本地软件包索引

apt-get update

 分别安装以下依赖项(python和nginx所需依赖均在此)

apt-get -y install gcc automake autoconf libtool
apt-get -y install make*
apt-get -y install zlib*
apt-get -y install openssl openssl-devel libssl-dev
apt-get -y install libpcre3 libpcre3-dev

5.3 安装python

使用python3 --version或者python --version可以看到目前是没有配置python

 5.3.1 下载python

在这个链接中找到所需的python版本,并复制下载链接,建议与你本地所用版本保持一致
​​​​​​https://www.python.org/ftp/python/

# 移动到想要存放python安装包的路径
cd /usr/local/src

# 安装下载命令
apt-get install -y wget

# 复制所选python压缩包的链接进行下载
wget https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz

# 下载完成后解压
tar -zxvf Python-3.9.10.tgz

# 进入解压后的目录
cd Python-3.9.10

# 配置编译选项,生成安装所需的Makefile
./configure --prefix=/usr/local/src/Python-3.9.10

# 编译并安装python,&&控制只有在make运行成功后才会运行make install
make && make install

5.3.2 配置python3和pip3软链接

配置软链接与配置环境变量类似,都可以实现快捷方式的作用。个人认为配置软链接更简单,因此选择软链接的方式来实现(在Linux、Debian配置环境变量与windows系统下操作类似,自行搜索了解)

# 配置python3软链接
ln -s /usr/local/src/Python-3.9.10/bin/python3.9 /usr/bin/python3

# 配置pip3软链接
ln -s /usr/local/src/Python-3.9.10/bin/pip /usr/bin/pip3

若配置出错,可在/usr/bin/目录下将错误的软链接删除

可以使用快捷命令查到版本号说明配置成功

 5.3.3 同步本地python库

在本地python项目使用以下命令,会在当前目录生成一个requirements.txt,该文件保存着当前python环境已安装的库

pip freeze > requirements.txt

然后将本地requirements.txt上传到服务器jenkins容器内,并安装

# 先在容器内安装可上传下载文件的lrzsz
apt-get install lrzsz

# 使用rz命令会弹出文件选择窗口,选择电脑本地requirements.txt文件进行上传
rz

# 安装requirements.txt所记录的库
pip3 install -r requirements.txt

# 安装完成后可以查看已安装列表确认是否有缺失
pip3 list

六、安装allure

生成测试报告需要用到allure命令,步骤与安装python相似

6.1 下载allure

在这个链接找到所需的allure版本下载到电脑本地(github需要使用魔法上网)

allure下载地址-GitHub

# rz选择本地下载好的allure压缩包进行上传
rz

# 将allure压缩包解压
tar -zxvf allure-2.27.0.tgz

6.2 配置allure软链接

# 配置软链接
ln -s /usr/local/src/allure-2.27.0/bin/allure /usr/bin/allure

# 确认配置成功
allure --version

七、安装nginx

jenkins有allure插件,但使用jenkins-allure插件生成的报告,其他人在访问时需要先登录jenkins账号,因此我选择使用nginx代理测试报告服务

7.1 下载nginx

nginx下载地址(无需魔法)

建议下载stable version稳定版本,鼠标右键选择复制链接

# 在容器内使用wget下载,或者下载到本地后再rz到容器内均可
wget https://nginx.org/download/nginx-1.24.0.tar.gz

# 将nginx包解压
tar -zxvf nginx-1.24.0.tar.gz

7.2 编译安装nginx

nginx所需依赖已经在安装python前安装过了

如果./configure或make过程中有报错,先回看5.2确保依赖均已安装

# 首先确保进入到解压后的nginx目录
cd /usr/local/src/nginx-1.24.0

# 配置编译选项,生成安装所需的Makefile
# 这里不能指定解压的nginx-1.24.0目录,会有冲突错误,我是新建了一个nginx文件夹
./configure --prefix=/usr/local/src/nginx

# 编译并安装nginx,&&控制只有在make运行成功后才会运行make install
make && make install

踩坑点:

如果在make && make install的结尾有类似以下的报错

cp: 'conf/koi-win' and '/usr/local/src/nginx-1.24.0/conf/koi-win' are the same file

make: *** [Makefile:13: install] Error 2

很可能是因为./configure --prefix=/usr/local/src/nginx-1.24.0这一步指定了解压后的nginx-1.24.0目录,编译后的可执行文件与nginx-1.24.0有重复内容,建议新建一个nginx文件夹,安装到该nginx路径中即可

配置nginx软链接,以便直接使用nginx命令

ln -s /usr/local/src/nginx/sbin/nginx /usr/bin/nginx

配置完成后我们先到安装目录/conf修改nginx配置文件的端口

vim /usr/local/src/nginx/conf/nginx.conf

#若用不了vim命令就先使用apt-get install vim

将监听的默认80端口改为9091并保存(上文jenkins容器启动命令的第二个端口号)

7.3 启动nginx

命令行单敲一个nginx回车即可启动nginx服务

nginx

 浏览器输入<服务器ip:端口号>,访问到欢迎页,即nginx启动成功

7.4 nginx常用命令

# 启动nginx
nginx

# 强制停止nginx服务
nginx -s stop

# 安全停止nginx服务
nginx -s quit

# 重新加载Nginx配置文件nginx.conf,修改配置文件后使用该命令可使配置立即生效
nginx -s reload

八、总结

        至此,你应该可以通过浏览器访问jenkins和nginx网页,在服务器docker容器内可以快捷使用python3、pip3、allure、nginx命令。

        jenkins的日常构建及测试报告的发送请看下篇。

欢迎评论区指正与讨论!

  • 34
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
搭建一个接口自动化测试框架可以使用以下工具和技术: 1. Python:作为主要开发语言,可以使用Python来编写测试脚本和测试用例。 2. Pytest:一款功能强大的Python测试框架,可以用于编写和运行测试用例,并提供丰富的断言和报告功能。 3. Allure:一个开源的测试报告生成工具,可以生成美观且易于理解的测试报告,支持多种语言和框架。 4. Git:版本控制工具,用于管理和同步测试代码。 5. Jenkins:一个持续集成和持续交付工具,可以自动化运行测试用例并生成测试报告。 6. Docker:容器化平台,可以用于创建和管理测试环境,提供一致的运行环境。 下面是搭建接口自动化测试框架的步骤: Step 1: 创建项目结构 在本地创建一个目录作为项目根目录,然后在根目录下创建以下子目录: - `tests`:存放测试脚本和测试用例; - `reports`:存放测试报告; - `config`:存放配置文件; - `utils`:存放一些工具类和函数。 Step 2: 编写测试用例 在`tests`目录下编写测试脚本和测试用例。可以使用Pytest来组织和执行测试用例,使用断言来验证测试结果。 Step 3: 配置Allure报告 在`config`目录下创建一个`pytest.ini`文件,配置Allure报告的相关参数,例如报告保存路径、报告标题等。 Step 4: 运行测试用例 使用Pytest运行测试用例,并生成Allure报告。可以使用命令行或者集成到Jenkins中进行自动化执行。 Step 5: 集成Git和Jenkins项目代码托管到Git仓库中,并在Jenkins中配置相关任务,使其在代码提交后自动触发测试用例的运行和报告的生成。 Step 6: 创建Docker镜像(可选) 使用Docker将测试环境打包成镜像,方便部署和维护。 一些可能出现的问题和解决方法: 1. 安装依赖:在搭建过程中,可能会遇到安装依赖包的问题。可以使用pip来安装所需的Python包,并注意版本兼容性。 2. 配置问题:在配置AllureJenkins时,可能会遇到配置不正确或缺少必要参数的问题。可以参考官方文档或者搜索解决方案来解决这些问题。 3. 报告生成失败:如果生成Allure报告失败,可以检查相关依赖是否安装正确,以及路径和权限是否设置正确。 4. 测试环境问题:如果测试用例在不同环境中运行时出现问题,可以考虑使用Docker来创建一致的测试环境,或者在测试用例中添加环境适配代码。 相关问题: 1. 除了Allure,还有哪些常用的测试报告生成工具? 2. 如何在Pytest中使用断言来验证测试结果? 3. 如何在Jenkins中配置任务来触发自动化测试? 4. 除了接口自动化测试,还有哪些类型的自动化测试可以使用Python实现?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值