jenkins自动发送测试报告至dingtalk

编写脚本:

1、首先获取到Jenkins中指定item的最近一次构建报告地址
2、通过设置dingtalk的机器人,绑定相关信息,构建后自动推送
jenkins自动发送测试报告至dingtalk_第1张图片

脚本内容如下:

# 获取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()


jenkins新增item:

jenkins自动发送测试报告至dingtalk_第2张图片

jenkins自动发送测试报告至dingtalk_第3张图片

关联项目设置:
1、获取到另一个item的报告(Pytest_allure_demo可以参考上一篇关于Jenkins集成测试用例,生成allure报告的博文)
2、执行该item进行推送(Ding_Send)
jenkins自动发送测试报告至dingtalk_第4张图片

jenkins自动发送测试报告至dingtalk_第5张图片
批处理命令:

c:
python ding_send.py
exit 0

设置定时任务定时推送:
jenkins自动发送测试报告至dingtalk_第6张图片
该项目的执行条件为上一个项目Pytest_allure_demo执行完成后,Ding_Send去获取生成的报告,然后发送至dingtalk,下面看下dingtalk机器人的一些操作:
jenkins自动发送测试报告至dingtalk_第7张图片
复制webhook后,填写到脚本中。
接收到的报告如下:
jenkins自动发送测试报告至dingtalk_第8张图片

你可能感兴趣的:(Python)