自從企業微信添加了群機器人功能,我們現在使用機器人發送測試報告,最開始使用的是文本類型,但是感覺沒有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類型,以上代碼為接口自動化實操代碼,如有代碼臃腫之處還望給出建議。
小小總結可能會解決你的問題,也可能解決不了你的問題,但還是希望對您有所幫助,感謝閱讀,如有疑義,歡迎來擾!未完待續…
一直都在努力變好中,希望您也是,加油!
轉載請附帶原文鏈接,否則追究法律責任,謝謝!