1、首先获取到Jenkins中指定item的最近一次构建报告地址
2、通过设置dingtalk的机器人,绑定相关信息,构建后自动推送
脚本内容如下:
# 获取jenkins构建信息和本次报告地址
import os
import jenkins
import json
import urllib3
# jenkins登录地址
jenkins_url = "http://localhost:8080/"
# 获取jenkins对象
server = jenkins.Jenkins(jenkins_url, username='***', password='***')
# job名称
job_name = "job/Pytest_allure_demo/"
# 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'
'''
钉钉推送方法:
读取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()
关联项目设置:
1、获取到另一个item的报告(Pytest_allure_demo可以参考上一篇关于Jenkins集成测试用例,生成allure报告的博文)
2、执行该item进行推送(Ding_Send)
c:
python ding_send.py
exit 0
设置定时任务定时推送:
该项目的执行条件为上一个项目Pytest_allure_demo执行完成后,Ding_Send去获取生成的报告,然后发送至dingtalk,下面看下dingtalk机器人的一些操作:
复制webhook后,填写到脚本中。
接收到的报告如下: