釘釘機器人自動推送測試報告


釘釘推送測試報告,關於推送的類型,最終選擇了推送markdown的,也實現了預期的功能。現在記錄下來,備忘。

效果圖:

 

 

實現功能:

①實時推送測試結果到釘釘;

②加上了可愛可憎的@所有人功能 ;

③增加每日壁紙圖;

④點擊報告鏈接可以跳轉查看詳細的測試報告

 

1、添加釘釘機器人

獲取自定義機器人webhook

步驟一,打開機器人管理頁面。以PC端為例,打開PC端釘釘,點擊頭像,選擇“機器人管理”。

image.png

 

步驟二,在機器人管理頁面選擇“自定義”機器人,輸入機器人名字並選擇要發送消息的群,同時可以為機器人設置機器人頭像。

 

 

屏幕快照 2019-10-25 下午1.50.45.png

 

步驟三,完成必要的安全設置(至少選擇一種),勾選 我已閱讀並同意《自定義機器人服務及免責條款》,點擊“完成”。安全設置目前有3種方式,設置說明見下文介紹。

image.png

 

步驟四,完成安全設置后,復制出機器人的Webhook地址,可用於向這個群發送消息,格式如下:

 

https://oapi.dingtalk.com/robot/send?access_token=XXXXXX

 

2、上代碼

2.1 封裝

import base64
import hashlib
import hmac
import time
import urllib.parse

import requests

from core.logger import Logger

logger = Logger().logger

Webhook_url = "https://oapi.dingtalk.com/robot/send"


class DingTalk:

    def __init__(self, msg):
        self.msg = msg
        logger.info("開始發送釘釘消息")

    # 加密簽名並組合字段
    def __spliceUrl(self):
        # 第一步,把timestamp+"\n"+密鑰當做簽名字符串,使用HmacSHA256算法計算簽名,然后進行Base64 encode,最后再把簽名參數再進行urlEncode,得到最終的簽名(需要使用UTF-8字符集)。
        timestamp = str(round(time.time() * 1000))
        secret = '**********'
        secret_enc = secret.encode('utf-8')
        string_to_sign = '{}\n{}'.format(timestamp, secret)
        string_to_sign_enc = string_to_sign.encode('utf-8')
        hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
        sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))

        # 第二步,把 timestamp和第一步得到的簽名值拼接到URL中。
        payload = {
            'access_token': '********',
            'timestamp': timestamp,
            'sign': sign
        }
        # print(payload)
        return payload

    # 發送釘釘消息
    def send_text(self):

        headers = {'Content-Type': 'application/json; charset=utf-8'}
        res = requests.post(Webhook_url, params=self.__spliceUrl(), headers=headers, json=self.msg)
        # print(res.url)
        # print(res.text)
        if "ok" in res.text:
            logger.info("釘釘消息發送成功")
        else:
            logger.error("釘釘消息推送失敗!" + res.text)


if __name__ == "__main__":
    pass

2.2 調用

# 發送釘釘推送消息
    msg = {
        "msgtype": "markdown",
        "markdown": {
            "title": "APP接口自動化測試報告",
            "text": "#### 體檢寶APP接口測試報告 \n> 執行應用:{} \n> 用例總數:{}條 \n> 執行結果:通過{}條 ,失敗{}條 ,通過率{}%\n> ![每日壁紙](http://p0.so.qhimgs1.com/t02631d1836db81f6e3.jpg)\n> ###### 點擊查看報告詳情。[報告]({}) \n".format(
                '體檢寶APP', num_[0], num_[1], int(num_[0]) - int(num_[1]), num_[-1], 'http://' + IP + ':12345/report_tjb')
        },
        "at": {
            "atMobiles": [
            ],
            "isAtAll": True
        }
    }
    # logger.info("訪問的地址是:{}".format(IP+':12346'+'/report'))
    ding = DingTalk(msg=msg)
    ding.send_text()

 

 

OK


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM