Docker下集成Jenkins+Pytest+Allure 测试环境
背景
基于已经写好的python+pytest API接口测试框架,将其和Jenkins集成实现CICD流程,并展示对应的allure报告
技术流
本节使用技术框架或工具有Docker,Jenkins,Pytest,github,allure
开始
默认读者是已具备相应技术框架或工具基本入门知识,以及有相应的api测试框架
使用docker搭建api接口测试框架
- 首先在pytest的API接口测试框架根目录中加入Dockerfile 用于构建Docker镜像文件,Dockerfile文件中编写代码如下:
FROM python:3.8
RUN mkdir /app
COPY . /app
COPY requirements.txt /app
RUN pip install -r /app/requirements.txt -i https://pypi.douban.com/simple
WORKDIR /app
RUN chmod 777 /app/allure/bin/allure
CMD ["python", "main.py"]
其中 RUN chmod 777 /app/allure/bin/allure
命令为给本地的allure文件可读可写可执行的权限,用于生成allure的报告数据。
- 在Dockerfile同级目录中编写docker-compose.yml用于指定参数运行docker镜像,编写代码如下
version: '3.4'
services:
autotest2master:
image: python:autotest
container_name: autotest
environment:
TZ: "Asia/Shanghai"
volumes:
- /home/autotest2-master/log:/app/log
- /home/jenkins/jenkins-compose/workspace/python_test/allure-results:/app/report/data
-/home/autotest2-master/log:/app/log
表示将容器内的app/log目录挂载在宿主机下的/home/autotest2-master/log下,改目录为日志目录,
同理 /home/jenkins/jenkins-compose/workspace/python_test/allure-results:/app/report/data
表示将容器内的/app/report/data数据挂载在宿主机的/home/jenkins/jenkins-compose/workspace/python_test/allure-results目录,用于同步allure的报告数据给jenkins
- 基于pytest搭建的api接口测试框架整体项目树如下:
├─api
│ └─client.py # 请求封装
├─config
│ └─config.yaml # 配置文件
├─data
│ └─APITestCase.xlsx # 用例文件
├─log
│ └─YYYY-MM-DD.log # 日志文件
├─report
│ ├─data # allure测试结果数据
│ └─html # allure报告
├─test
│ ├─conftest.py # 依赖对象初始化
│ └─test_api.py # 测试文件
├─tools # 工具包
│ ├─__init__.py # 常用方法封装
│ ├─data_process.py # 依赖数据处理
| ├─sql_operate.py # 数据库操作文件
├─requirements.txt # 项目依赖库文件
├─Dockerfile # 用于构建Docker镜像文件
├─docker-compose.yml # 用于运行构建的镜像文件
└─main.py # 主启动文件
- 服务器执行
docker build -t python:autotest .
开始构建仓库名为python tag标签名为autotest的镜像文件,请一定留意改行代码中的.
他是必不可少的,表示基于当前目录的Dcokerfile文件构建镜像。
[root@VM-0-10-centos ~]# docker build -t python:autotest-v2 .
- 然后再执行
docker-compose up
运行镜像文件,如下:
[root@VM-0-10-centos autotest2-master]# docker-compose up
Starting autotest ... done
Attaching to autotest
...
...
...
autotest | FAILED test/test_api.py::test_main[cases0] - AssertionError: ('the 1th api as...
autotest | ============================== 1 failed in 0.13s ===============================
autotest exited with code 0
如上输出即表示成功在docker容器中部署pytest接口框架。
使用docker搭建Jenkins
- 同样需要在服务器创建 docker-compose.yml文件并输入如下代码:
version: '3'
services:
jenkins-compose:
image: jenkins/jenkins:lts
privileged: true
user: root
ports:
- "8081:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
- /home/jenkins/jenkins-compose:/var/jenkins_home
- 在浏览器输入 ip:8081 显示如下,即表示Jenkins环境已搭建好(我这边跳过安装环节,有需要的同学可以参考其他博客)
- 登录进Jenkins
新增配置allure插件配置
下载完成后需要重启Jenkins
全局配置allure
点击新建任务
输入任务名,再点击构建一个自由风格的软件项目
填写描述,及源码地址。公司项目一般源码都是部署在gitlab,
我这里是个人项目,填写的是github的地址
选择通过shell脚本构建
shell脚本填写如下内容
docker start autotest
构建后的操作配置allure报告
点击保存
开始构建
点击立即构建可查看构建结果及对应的allure报告
点击构建详情
可看到左侧菜单栏中有allure报告
allure报告展示