接口自动化之 + Jenkins + Allure报告生成 + 企微消息通知推送
在jenkins上部署好项目,构建成功后,希望可以把生成的报告,以及结果统计发送至企微。
效果图:
实现如下。
1、生成allure报告
a. 首先在Jenkins插件管理中,搜索并安装allure插件
b. 其次,在 全局工具管理中,新增设置,注意别名最好填本地allure的文件名
c. 在Jenkins自己job中,添加构建后操作中添加allure report,填好结果文件路径和生成的report的路径。jenkins上设置完成。
2、下面开始编写python的代码,注意:这个代码支持企业微信和钉钉,只需要把里面的webhook 换掉就行
import os
import time
import requests
from jenkins import Jenkins
# jenkins的url地址(就是域名,本机就是ip+端口号)
jenkins_url = "http://192.168.***.***:****/"
# 登录jenkins
server = Jenkins(jenkins_url, username="admin", password="123456")
# print(server.server)
# 选择你的jenkins项目名称的地址,这段代码加上jenkins的url就会进入你的ApiTest项目
job_name = "job/API_Test_Driver"
# 发消息的地址
# job_url = server.get_info(job_name)["url"]
# 使用server.server 获取jenkins + url
job_url = server.server + job_name
# 获取最新的构建任务名称,用于拼接后续allure地址
job_last_number = server.get_info(job_name)["lastBuild"]["number"]
# 测试报告allure地址
report_url = job_url + "/" + str(job_last_number) + "/allure"
# 记录时间
job_time = time.strftime("%Y-%m-%d_%H-%M-%S")
def push_message():
content = {}
# 服务器执行
file_path = os.path.dirname(os.getcwd()) + "/outFiles/report/html/export/prometheusData.txt"
# # 用于本地调试
# file_path = os.path.dirname(os.getcwd()) + "/outFiles/report/html/export/prometheusData.txt"
f = open(file_path, "r", encoding="utf-8")
for line in f.readlines():
launch_name = line.strip("\n").split()[0]
num = line.strip("\n").split()[1]
# 把分割出来的数据组装成键值对 update是一个方法用于组装字典的
content.update({launch_name: num})
f.close()
passed_num = content["launch_status_passed"] # 通过数量
failed_num = content["launch_status_failed"] # 失败数量
broken_num = content["launch_status_broken"] # 阻塞数量
skipped_num = content["launch_status_skipped"] # 跳过数量
case_num = content["launch_retries_run"] # 总数量
"""
钉钉消息发送,通过webhook发送消息
"""
webhook = "这里放的你的webhook地址,也就是你在企业微信或者钉钉里面添加机器人生成的那个链接"
content = {
"msgtype": "text",
"text": {
"content": "【接口自动化脚本执行结果】: \n【运行总数】:" + case_num
+ "\n【通过数量】: " + passed_num
+ "\n【失败数量】: " + failed_num
+ "\n【阻塞数量】: " + broken_num
+ "\n【跳过数量】: " + skipped_num
+ "\n【构建地址】: " + job_url
+ "\n【报告地址】: " + report_url
+ "\n【测试时间】: " + job_time
}
}
requests.post(url=webhook, json=content, verify=False)
# 因为他是https的所以需要加verify = False让他不报警告
push_message()
3、开始设置钉钉或者企业微信,你先找到你要发送消息的群组(我这里用的企微,钉钉也一样)
编辑机器人:
好了,企业微信和钉钉的机器人就配置好了 webhook也拿到了
4、安装插件 Post Build task 进行生成报告后的shell执行
5、点击你的自动化脚本,在点击配置,把以下内容加进去
#!/bin/bash
echo "=========> 安装Jenkins插件..."
if ! command -v python3 &> /dev/null
then
echo "python3未安装,正在安装..."
sudo apt-get update
sudo apt-get install -y python3
fi
pip3 install python-jenkins
echo "=========> 发送测试报告..."
cd ${WORKSPACE}/message
python3 send_qiwei.py
6、然后现在你的自动化任务执行之后就会把结果发在工作群了,Jenkins上也生成了allure测试报告,完美展示。