1. 程式人生 > 實用技巧 >sonnar 執行測試併發送報告到釘釘

sonnar 執行測試併發送報告到釘釘

#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": '## {}\n'.format(title)+str(msg)+'\n[檢視報告]({})'.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