python使用企業微信機器人發送測試報告


 



 

 

自從企業微信添加了群機器人功能,我們現在使用機器人發送測試報告,最開始使用的是文本類型,但是感覺沒有markdown的顯示好看,索性就更換成了markdown類型的

官網上介紹的還可以發送圖片和圖文等類型,但是還沒實操過,所以不多介紹,只介紹文本(text)和markdown類型

 

鼠標點擊此處進入企業微信幫助文檔頁面

 

消息類型及數據格式 》文本類型

{
    "msgtype": "text",
    "text": {
        "content": "廣州今日天氣:29度,大部分多雲,降雨概率:60%",
        "mentioned_list":["wangqing","@all"],
        "mentioned_mobile_list":["13800001111","@all"]
    }
}

 

消息類型及數據格式 》markdown類型

{
    "msgtype": "markdown",
    "markdown": {
        "content": "實時新增用戶反饋<font color=\"warning\">132例</font>,請相關同事注意。\n
         >類型:<font color=\"comment\">用戶反饋</font> \n
         >普通用戶反饋:<font color=\"comment\">117例</font> \n
         >VIP用戶反饋:<font color=\"comment\">15例</font>"
    }
}

 

目前支持的markdown語法是如下的子集:

  1、標題 (支持1至6級標題,注意#與文字中間要有空格)

# 標題一
## 標題二
### 標題三
#### 標題四
##### 標題五
###### 標題六

  2、加粗

**bold**

  3、鏈接

[這是一個鏈接](http://work.weixin.qq.com/api/doc)

  4、引用

> 引用文字

  5、字體顏色(只支持3中內置顏色)

<font color="info">綠色</font>
<font color="comment">灰色</font>
<font color="warning">橙紅色</font>

 

接下來我們使用python代碼先實現markdown類型

 1 import apiProject as ap
 2 
 3 
 4 class WeChat:
 5 
 6     def __init__(self):
 7         self.conf = ap.HandleConf()
 8         self.read = ap.HandleFiles()
 9         ap.urllib3.disable_warnings()
10 
11     @staticmethod
12     def message(project, end, total, passing, succeed, failing, skip, error, address):
13         """
14         需要發送到企業微信的文案信息
15         :param project:         項目名稱
16         :param end:             指定端[web、app、h5]
17         :param total:           總計
18         :param passing:         通過率
19         :param succeed:         通過數
20         :param failing:         失敗數
21         :param skip:            跳過數
22         :param error:           錯誤數
23         :param address:         鏈接地址->放一個鏈接信息
24         :return:                返回data信息
25         """
26         data = {
27             "msgtype": "markdown",  # 消息類型,此時固定為markdown
28             "markdown": {
29                 "content": "# **提醒!自動化測試反饋**\n#### **請相關同事注意,及時跟進!**\n"
30                            "> 項目名稱:<font color=\"info\">%s</font> \n"
31                            "> 項目指定端:<font color=\"info\">%s</font> \n"
32                            "> 測試用例總數:<font color=\"info\">%s條</font>;測試用例通過率:<font color=\"info\">%s</font>\n"
33                            "> **--------------------運行詳情--------------------**\n"
34                            "> **成功數:**<font color=\"info\">%s</font>\n**失敗數:**<font color=\"warning\">%s</font>\n"
35                            "> **跳過數:**<font color=\"info\">%s</font>\n**錯誤數:**<font color=\"comment\">%s</font>\n"
36                            "> ##### **報告鏈接:** [jenkins報告,請點擊后進入查看](%s)" % (
37                            project, end, total, passing, succeed, failing, skip, error, address)
38                 # 加粗:**需要加粗的字**
39                 # 引用:> 需要引用的文字
40                 # 字體顏色(只支持3種內置顏色)
41                 # 標題 (支持1至6級標題,注意#與文字中間要有空格)
42                 # 綠色:info、灰色:comment、橙紅:warning
43             }
44         }
45         return data
46 
47     def send_message(self, project, end, total, passing, succeed, failing, skip, error, address='', is_curl=False):
48         """
49         發送文案信息
50         :param project:         項目名稱
51         :param end:             指定端[web、app、h5]
52         :param total:           總計
53         :param passing:         通過率
54         :param succeed:         通過數
55         :param failing:         失敗數
56         :param skip:            跳過數
57         :param error:           錯誤數
58         :param address:         鏈接地址->放一個鏈接信息
59         :param is_curl:         判斷是測試還是線上
60         :return:
61         """
62         jenkins_address = self.jenkins_data()
63         data = self.message(project, end, total, passing, succeed, failing, skip, error, address=jenkins_address)
64         # 獲取企業微信群機器人的url, 使用的python第三方庫requests庫發送的請求
65         if is_curl:
66             url = self.conf.get_value('WeChat', 'pro_curl')
67             res = ap.requests.post(url=url, json=data, verify=False)
68         else:
69             url = self.conf.get_value('WeChat', 'test_curl')
70             res = ap.requests.post(url=url, json=data, verify=False)
71         return res.text
72 
73     def jenkins_data(self):
74         
75         # 登錄jenkins,從jenkins獲取報告信息
76         account = self.read.read_yaml('jenkins_data', 'pro')
77         server = ap.jenkins.Jenkins(account['jenkins_url'], username=account['user_name'], password=account['password'])
78         jenkins_data = tuple(i['url'] for i in server.get_views())
79         for i in jenkins_data:
80             u = ap.urlparse(i)
81             v_scheme, v_netloc, v_path = u.scheme, u.netloc, u.path
82             if '9first_api_all' in v_path:
83                 return i
84             else:
85                 return v_scheme + '://' + v_netloc + '/'

運行成功后,就會自動往指定企業微信群發送一個消息內容​

 

 然后我們再來使用python代碼實現文本類型( text ),就是把發送的格式修改成文本類型,所以我也就只改了這個靜態方法

 1     @staticmethod
 2     def message(project, end, total, passing, succeed, failing, skip, error, address):
 3         """
 4         需要發送到企業微信的文案信息
 5         :param project:         項目名稱
 6         :param end:             指定端[web、app、h5]
 7         :param total:           總計
 8         :param passing:         通過率
 9         :param succeed:         通過數
10         :param failing:         失敗數
11         :param skip:            跳過數
12         :param error:           錯誤數
13         :param address:         鏈接地址->放一個鏈接信息
14         :return:                返回data信息
15         """
16         data = {
17             "msgtype": "text",  # 消息類型,此時固定為text
18             "text": {
19                 "content": "提醒!自動化測試反饋\n請相關同事注意,及時跟進!\n"
20                            "項目名稱:%s\n"
21                            "項目指定端:%s\n"
22                            "測試用例總數:%s條;測試用例通過率:%s\n"
23                            "--------------------運行詳情--------------------\n"
24                            "成功數:%s\n失敗數:%s\n"
25                            "跳過數:%s\n錯誤數:%s\n"
26                            "報告鏈接:%s" % (
27                            project, end, total, passing, succeed, failing, skip, error, address)
28             }
29         }
30         return data

運行成功后,也會發送一個信息到指定企業微信群中

 

兩種發送信息對比下,沒有markdown的好看,因為mark的可以字體加粗、加顏色、增連接等......所以瞬間就決定更換成了markdown類型,以上代碼為接口自動化實操代碼,如有代碼臃腫之處還望給出建議。

 


小小總結可能會解決你的問題,也可能解決不了你的問題,但還是希望對您有所幫助,感謝閱讀,如有疑義,歡迎來擾!未完待續…

一直都在努力變好中,希望您也是,加油!

 

轉載請附帶原文鏈接,否則追究法律責任,謝謝!

 


免責聲明!

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



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