构建思路
创建两个钉钉机器人(一个机器人发送构建信息,一个机器人发送测试用例结果),发送构建结果可以通过jenkins的钉钉插件实现,发送测试结果可以通过获取测试报告数据用代码给钉钉发送实现。
创建两个任务,第一个任务使用jenkins插件,发送测试运行的结果(成功,失败...)第二个任务关联第一个任务,第一个任务触发后,获取最后一次的构建记录,发送测试用例结果
发送构建结果
创建第一个钉钉机器人(怎么创建机器人就不做介绍了)
imagejenkins安装钉钉插件
系统管理-插件管理-可选插件搜索“钉钉”,我这已经安装,安装后重启jenkins
imagejenkins配置钉钉
系统管理-系统配置-钉钉
image 点击测试,如果钉钉机器人发送如图: image说明钉钉配置成功。
发送任务构建结果
在配置任务中打开钉钉机器人即可
image点击立即构建,钉钉机器人就会发送构建结果如图:
image发送测试用例结果
python代码
[ 复制代码](javascript:void(0); "复制代码")
<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 获取jenkins构建信息和本次报告地址
import os
import jenkins #安装pip install python-jenkins
import json
import urllib3
jenkins登录地址
jenkins_url = "http://*******8:8080/" # 获取jenkins对象
server = jenkins.Jenkins(jenkins_url, username='*****', password='*****') #Jenkins登录名 ,密码
job名称
job_name = "job/test_mock/" #Jenkins运行任务名称 # job的url地址
job_url = jenkins_url + job_name
获取最后一次构建
job_last_build_url = server.get_info(job_name)['lastBuild']['url']
报告地址
report_url = job_last_build_url + 'allure' #'allure'为我的Jenkins全局工具配置中allure别名
''' 钉钉推送方法:
读取report文件中"prometheusData.txt",循环遍历获取需要的值。
使用钉钉机器人的接口,拼接后推送text ''' def DingTalkSend():
d = {}
# 获取项目绝对路径
path = os.path.abspath(os.path.dirname((file)))
# 打开prometheusData 获取需要发送的信息
f = open(path + r'/allure-report/export/prometheusData.txt', 'r') for lines in f: for c in lines:
launch_name = lines.strip('\n').split(' ')[0]
num = lines.strip('\n').split(' ')[1]
d.update({launch_name: num})
print(d)
f.close()
retries_run = d.get('launch_retries_run') # 运行总数
print('运行总数:{}'.format(retries_run))
status_passed = d.get('launch_status_passed') # 通过数量
print('通过数量:{}'.format(status_passed))
status_failed = d.get('launch_status_failed') # 不通过数量
print('通过数量:{}'.format(status_failed))
# 钉钉推送
url = 'https://oapi.dingtalk.com/robot/send?access_token=***************' # webhook
con = {"msgtype": "text", "text": { "content": "Pytest_Allure_Demo自动化脚本执行完成。"
"\n测试概述:"
"\n运行总数:" + retries_run +
"\n通过数量:" + status_passed +
"\n失败数量:" + status_failed +
"\n构建地址:\n" + job_url +
"\n报告地址:\n" + report_url
}
}
urllib3.disable_warnings()
http = urllib3.PoolManager()
jd = json.dumps(con)
jd = bytes(jd, 'utf-8')
http.request('POST', url, body=jd, headers={'Content-Type': 'application/json'}) if __name__ == '__main__':
DingTalkSend()</pre>
[
复制代码
](javascript:void(0); "复制代码")
参考博客:https://blog.csdn.net/juejiang_lovingyou/article/details/104921840
将代码放在jenkins生成allure报告同级目录下
image创建第二个机器人(这里需要加入IP段)
ip获取:可以先随意填写,去jenkins-系统配置-钉钉中测试,看错误提示信息,将提示的ip加入ip段中
比如:
imageip为123.232..,就将这个ip加入到钉钉的IP段中,再将这个ip的123.232.***.0/24加入到IP段中,再点击测试,重复前面操作,直到钉钉机器人发送消息
image创建第二个任务
构建运行节点
image构建触发器
image构建执行,运行代码
image应用,保存。
构建第一个任务第二个任务也会触发 ,钉钉将会收到如图:
image
网友评论