#coding=utf8 import requests import json import os from requests.auth import HTTPBasicAuth import ssl ssl._create_default_https_context = ssl._create_unverified_context requests.packages.urllib3.disable_warnings() prod_name=os.environ['prod_name'] def get_datas(): global prod_name result={} server_ip='XXXXXX' res=requests.get(url=(server_ip+'/api/measures/component?componentKey='+prod_name+'&metricKeys=alert_status,bugs,reliability_rating,vulnerabilities,security_rating,code_smells,sqale_rating,duplicated_lines_density,coverage,ncloc,ncloc_language_distribution'),auth=HTTPBasicAuth("admin","Uyunsoft@321")) res=json.loads(res.text)['component']['measures'] for i in res: result.update({i['metric']:i['value']}) return result def send_msg(msg): global prod_name token='XXXXXXXXx' url = 'http://oapi.dingtalk.com/robot/send?access_token='+token headers = { 'Content-Type': 'application/json;charset=utf-8' } msg='bug:{},漏洞:{},坏味道:{},覆盖率:{},重复:{},状态:{}'. format(msg['bugs'],msg['vulnerabilities'],msg['code_smells'],msg['coverage'],msg['duplicated_lines_density'],msg['alert_status']) msg_url="XXXXXXXXX/dashboard?id="+prod_name title=prod_name+"代码质量报告" formdata = { "msgtype": "markdown", "markdown": { "title":prod_name+"代码质量报告", "text": '## {} '.format(title)+str(msg)+' [查看报告]({})'.format(msg_url) } } print(formdata) res = requests.post(url=url, data=json.dumps(formdata), headers=headers, proxies={"http": "http://XXXXXXXXXX:8088"},verify=False) print(res.text) result=get_datas() send_msg(result) print result
还可以收集jmeter的报告发送到钉钉
#coding=utf-8 import requests import json import sys import os import re from requests.auth import HTTPBasicAuth import ssl ssl._create_default_https_context = ssl._create_unverified_context requests.packages.urllib3.disable_warnings() prod_name='Monitor' def get_datas(test_dir): lists = os.listdir(test_dir) # lists.sort(key=lambda fn: os.path.getmtime(test_dir + os.sep + fn)) # 按时间排序 # file_new = os.path.join(test_report, lists[-1]) # 获取最新的文件保存到file_new # print(file_new) # return file_new for i in lists: if i.endswith('.html'): return i def send_msg(report_path): global prod_name token='XXXX' url = 'http://oapi.dingtalk.com/robot/send?access_token='+token headers = { 'Content-Type': 'application/json;charset=utf-8' } with open(report_path) as f: out=f.readlines() out=''.join(out) # print(out) res_tr = r'Summary(.*?)<button' m_tr = re.findall(res_tr, out,re.S|re.M) print(m_tr) res_tr = r'<td align="center">(.*?)</td>' out = re.findall(res_tr, m_tr[0], re.S | re.M) # for i in out: # print(i) msg='执行总数:{},成功数:{},失败数:{},成功率:{},Average Time:{},Min Time:{},Max Time:{} '. format(out[0],out[1],out[2],out[3],out[4],out[5],out[6]) msg_url="http://XXXX/dashboard?id="+prod_name title=prod_name+"接口测试报告" formdata = { "msgtype": "markdown", "markdown": { "title":prod_name+"接口测试报告", "text": '## {} '.format(title)+str(msg)+' [查看报告]({})'.format(msg_url) } } print(formdata) res = requests.post(url=url, data=json.dumps(formdata), headers=headers, proxies={"http": "http://xxxxxxx:8088"},verify=False) print(res.text) result=get_datas('/home/soft/apache-jmeter-5.3/bin/fengbin') report_path=os.path.join('/home/soft/apache-jmeter-5.3/bin/fengbin',result) send_msg(report_path) print(result)