zoukankan      html  css  js  c++  java
  • 自动化执行

    背景

    公司内部用钉钉来办公,钉钉支持机器人提醒,有各种各样的机器人提供选择,可以根据需求来定制机器人,达到提醒功能,如提醒某人请下午茶,233

    思路

    1. 添加机器人到群组中,这次将的是“自定义”机器人;

    2. 添加后会发现有一个webhook的链接,可以点击“设置说明”查看详情

    3. 可以通过post请求网这个webhook发送信息,机器人就可以在群里展示信息,文档里有定义不同的请求body;

     文档地址:https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.karFPe&treeId=257&articleId=105735&docType=1

     这里需要吐槽的一点,目前只发现text类型支持换行

    4. 关键就是post请求里面的信息的填充,如果想到用python来处理;

    5. 编写python脚本:大致思路就是解析自动化result文件,组装post请求

     实际代码如下:

      

    import requests
    import time
    import json
    import sys
    import hashlib
    import xml.dom.minidom
    
    
    
    HEADERS = {'ua': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36'}
    DINGDING_URL= 'https://oapi.dingtalk.com/robot/send?access_token=your_access_token'
    RESULT_FILE= '/var/lib/jenkins/workspace/wm-api-autotest/target/surefire-reports/testng-results.xml'
    REPORT_URL_FILE= '/var/lib/jenkins/workspace/wm-api-autotest/target/allure-results/executor.json'
    
    class Message():
    
        def __init__(self):
            self.total=0;
            self.passed=0;
            self.failed=0;
            self.skipped=0;
            self.reportUrl="";
    
        #解析文件获取结果数据
        def analyze(self):
            #打开xml文档
            dom = xml.dom.minidom.parse(RESULT_FILE)
            #得到文档元素对象
    
            root = dom.documentElement
            self.total = root.getAttribute('total')
            self.passed = root.getAttribute('passed')
            self.failed = root.getAttribute('failed')
            self.skipped = root.getAttribute('skipped')
    
            #构建的次数统计在json文件中
            file = open(REPORT_URL_FILE,'r')
            self.reportUrl=json.load(file)['reportUrl']
    
        #发送报告
        def send_message_to_robot(self):
            url= DINGDING_URL
            message='wm-api自动化执行结果:
    本次执行了{}条用例;
    成功了{}条;
    失败了{}条;
    跳过了{}条;
    查看详情请点击=> {}'.format(self.total,self.passed,self.failed,self.skipped,self.reportUrl)
            data={"msgtype":"text","text":{"content":message,"title":"wm-api自动化结果通知"}}
            try:
                resp = requests.post(url,headers=HEADERS,json=data,timeout=(3,60))
            except:
                print ("Send Message is fail!");
    
    
    
    if __name__ == '__main__':
        message = Message()
        message.analyze();
        message.send_message_to_robot();

    6. jenkins设置,需要新增一个插件“Post build task”,用于构建后执行shell命令

    7. 实际结果展示:

    小结

    1. 之前用邮件提醒,但邮件这东西容易被忽略,可以借助其他工具,如钉钉提醒;

    2. 多接触/尝试新的东西没错;

  • 相关阅读:
    递归判断多维数组中对象是否有值
    Web前端开发 --》 如何实现页面同时在移动端和pc端的兼容问题
    使用 yield 减少内存消耗
    git 中断 merge
    laravel 命令行测试 Uncaught ReflectionException: Class config does not exist
    laravel 单元测试设置模拟时间
    laravel 单元测试设置模拟时间
    php Mockery 错误 "call_user_func_array() expects parameter 1 to be a valid callback, class 'MockeryExpectation' does not have a method"
    git 创建空提交
    RabbitMQ 客户端开发向导
  • 原文地址:https://www.cnblogs.com/jwentest/p/7614495.html
Copyright © 2011-2022 走看看