import requests import time import hmac import hashlib import base64 import urllib.parse timestamp = str(round(time.time() * 1000)) secret = 'SEC7c41f8b0298b348ed538883c49068185b75c510d64dcb988fc570cb7614f07ff' #正式的webhook # secret = 'SEC9d91939234e83369cba32c0ca4bcd9af60b5b1f69424d6fabd36f48d572a151c' #测试用的webhook 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)) # webhook_url = 'https://oapi.dingtalk.com/robot/send?access_token=22fda27990b00841c3201c20649c0a8abb6da82d8472b6f6154ef4cd9dadb33f' #测试用的webhook webhook_url = 'https://oapi.dingtalk.com/robot/send?access_token=c7d3c3a67db4cf7b3472e62005a25ce202daac8095f32530687afdb91f1616b6' #正式的webhook class webhookHandler: def __init__(self,webhookUrl = f"{webhook_url}×tamp={timestamp}&sign={sign}"): self.webhookUrl = webhookUrl def sendAutotestReport(self,result,second): local_time = time.localtime(time.time()) current_date_time_str = time.strftime('%Y-%m-%d %H:%M:%S', local_time) data = { "msgtype": "markdown", "markdown": { "title":"#willdesk接口自动化测试报告", "text": "#### 本次接口自动化测试结果如下 \n > ###### 用例总数:%s\n > ###### 成功用例数量:%s\n > ###### 失败用例数量:%s\n > ###### 报错用例数量:%s\n > ###### 跳过用例数量:%s \n > ###### 耗时:%s秒\n > ###### 报告生成时间:%s [测试报告](https://flow.aliyun.com/pipelines/3052941/current)"%(result._numcollected,len(result.stats.get('passed', [])),len(result.stats.get('failed', [])),len(result.stats.get('error', [])),len(result.stats.get('skipped', [])),second,current_date_time_str) }, } res = requests.post(url=self.webhookUrl,json=data) # print(res.json()) def sendMsg(self,title,text): data = { "msgtype": 'markdown', "markdown": { "title": title, "text": text } } res = requests.post(url=self.webhookUrl,data=data) webhook = webhookHandler()