Docker 服务器部署 api 自动化测试(Jenkins+Httprunner+Allure+Docker+ 发送 Allure 报告至钉钉群)

栗山未来 · 2021年08月09日 · 最后由 嘚瑟挨顿揍 回复于 2021年08月10日 · 4381 次阅读

最近开始做接口自动化,学了一下 Httprunner,感觉很简便,就用来做了一些测试用例,之后集成和输出测试报告这方面,感觉用的最多的还是 Jenkins,就看了一些教程,在本地跑通了,这里记录一下在服务器上面部署的操作。

刚开始在本地部署的时候,因为有一些依赖没装,导致后面遇到了很多问题😅

印象最深的是 openssl 和 libbz2-dev,这两个模块没有的话一个导致没办法用 https 请求去下载东西,一个是后面的 bz2 模块缺失问题 (stackoverflow yyds),重新安装这些依赖后还要重新去编译安装 Python,很费精力,所以能一开始避免掉最好。

下面是具体的一些操作:

下载 Jenkins 镜像
docker pull jenkins/jenkins
宿主机创建文件夹用于挂载容器
mkdir /data/jenkins_home
赋予权限
chmod -R 777 /data/jenkins_home
创建并启动容器
docker run -d -uroot -p 9090:8080 --name jenkins -v /data/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --restart=always jenkins/jenkins
  • -d 后台运行
  • -p 镜像 8080 端口映射到服务器 9090 端口
  • localtime 容器与服务器时区一致
  • restart 自动重启

进入容器,开始安装运行环境

root@tang:~# docker exec -it -uroot jenkins /bin/bash
root@5723d446e00a:/# apt-get update && apt-get upgrade
root@5723d446e00a:/# apt-get -y install gcc automake autoconf libtool make openssl libssl-dev sudo
root@5723d446e00a:/# apt-get -y install zlib*
root@5723d446e00a:/# cd /usr/local/src/
root@5723d446e00a:/usr/local/src# wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz
解压,重命名
root@5723d446e00a:/usr/local/src# tar -zxvf Python-3.9.6.tgz 
root@5723d446e00a:/usr/local/src# mv Python-3.9.6 py3.9

开始编译
root@5723d446e00a:/usr/local/src/py3.9# ./configure --prefix=/usr/local/src/py3.9/
root@5723d446e00a:/usr/local/src/py3.9# make && make install
搞一下软链,检查下 python 是否正常

装一下项目要用的依赖

pip3 install (httprunner,allure-pytest,pytest) 等等...

装一下 Allure

root@5723d446e00a:/usr/local/src# wget https://github.com/allure-framework/allure2/releases/download/2.14.0/allure-2.14.0.tgz

解压,改名,赋权限
root@5723d446e00a:/usr/local/src# tar -zxvf allure-2.14.0.tgz 
root@5723d446e00a:/usr/local/src# mv allure-2.14.0 allure
root@5723d446e00a:/usr/local/src# chmod -R 777 allure
装一下 vim(不装也行,因为忘记了 Jenkins 登录密码,要改 config 文件,我就装了 vim),设一下环境变量
root@5723d446e00a:/usr/local/src# apt-get install -y vim
root@5723d446e00a:/usr/local/src# vim /root/.bashrc 

立即生效
source /root/.bashrc
开始简单配置 Jenkins
根据服务器 ip 和端口号打开本地浏览器直接访问

获取下初始密码

根据提示安装下插件

创建账号

装一下 gitlab 的插件


装一下 Allure 插件

装一下 post build task(这个插件用来跑构建完成后的操作,执行一下脚本发送消息到钉钉群)

搞一下允许注册(最开始在本地部署的时候,忘记了账号的密码。。最后要去改 config 配置文件才行,这里直接允许注册,以后忘了密码也省事。。)

全局配置中设置

git:

Allure:

新建一个 FreeStyle 的项目

源码管理进行配置,我这里用的是 HTTPS 地址,如果用 SSH 链接就填一下 SSH 链接地址,然后凭据就用 gitlab 已添加 SSHkey 的私钥即可

如果没有连接成功,这里是会有报红的,没有则连接成功

个人按需配置下构建触发器,我这里是由另一个 api 项目(dev 分支的 push event 构建)触发本测试流程的(所以你需要把对应的那个项目在 Jenkins 上配置好)。

触发构建时的操作:

构建完成后的操作:
这两个文件夹要一直,其中 ${WORKSPACE} = 容器中 /var/jenkins_home/workspace/项目名 这个路径

写下 post build task 的脚本,发送消息至钉钉,参考链接:

https://developers.dingtalk.com/document/robots/custom-robot-access

立即构建一条试试效果

构建失败了

点进去,看下控制台输出

allure-report 路径没问题,运行环境少了一个 Module, 重新安装再试下
参考链接:

https://stackoverflow.com/questions/22346269/bz2-is-module-not-available-when-installing-pandas-with-pip-in-python-virtual
https://stackoverflow.com/questions/8115280/importerror-no-module-named-bz2-for-python-2-7-2

重新构建,这次从上游项目即 api 项目手动点立即构建,可以看到,上游项目一触发构建,当前的 api-test 已经在队列里了


api-test 构建结束后收到了钉钉群的消息

点开看下输出的 Allure 报告,可以看到执行方为 Jenkins 以及对应执行的编号


看了下测试用例失败的原因,报错 503,是开发同学在重新部署测试环境。
总的流程大致就是这样了,试水还算成功。

共收到 1 条回复 时间 点赞

感谢大佬分享

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册