zoukankan      html  css  js  c++  java
  • jenkins连接钉钉发送测试报告

    构建思路

      创建两个钉钉机器人(一个机器人发送构建信息,一个机器人发送测试用例结果),发送构建结果可以通过jenkins的钉钉插件实现,发送测试结果可以通过获取测试报告数据用代码给钉钉发送实现。

      创建两个任务,第一个任务使用jenkins插件,发送测试运行的结果(成功,失败...)第二个任务关联第一个任务,第一个任务触发后,获取最后一次的构建记录,发送测试用例结果

    发送构建结果

    创建第一个钉钉机器人(怎么创建机器人就不做介绍了)

     

     jenkins安装钉钉插件

    系统管理-插件管理-可选插件搜索“钉钉”,我这已经安装,安装后重启jenkins

     jenkins配置钉钉

    系统管理-系统配置-钉钉

     点击测试,如果钉钉机器人发送如图:说明钉钉配置成功。

    发送任务构建结果

    在配置任务中打开钉钉机器人即可

     点击立即构建,钉钉机器人就会发送构建结果如图:

     发送测试用例结果

     python代码

    # 获取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('
    ').split(' ')[0]
                num = lines.strip('
    ').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自动化脚本执行完成。"
                              "
    测试概述:"
                              "
    运行总数:" + retries_run +
                              "
    通过数量:" + status_passed +
                              "
    失败数量:" + status_failed +
                              "
    构建地址:
    " + job_url +
                              "
    报告地址:
    " + 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()

    参考博客:https://blog.csdn.net/juejiang_lovingyou/article/details/104921840

    将代码放在jenkins生成allure报告同级目录下

     创建第二个机器人(这里需要加入IP段)

    ip获取:可以先随意填写,去jenkins-系统配置-钉钉中测试,看错误提示信息,将提示的ip加入ip段中

    比如:

     ip为123.232.***.***,就将这个ip加入到钉钉的IP段中,再将这个ip的123.232.***.0/24加入到IP段中,再点击测试,重复前面操作,直到钉钉机器人发送消息

     创建第二个任务

    构建运行节点

    构建触发器

     构建执行,运行代码

     应用,保存。

    构建第一个任务第二个任务也会触发 ,钉钉将会收到如图:

  • 相关阅读:
    关于抑或
    【vue】条件渲染 v-if v-else
    【vue】vue的目录结构、项目流程、vue-router
    【vue】在vue中引入iview
    【vue】vue如何创建一个项目
    【jquery】jquery怎么实现点击一个按钮控制一个div的显示和隐藏
    【angularjs】ng-model controller中取不到值(input)
    打印机增强软件pdfpro
    vagrant 安装ubuntu12.04 64 bit
    debian 7 stable 不能编译android源码
  • 原文地址:https://www.cnblogs.com/MrqiuS/p/14211637.html
Copyright © 2011-2022 走看看