首頁 > 軟體

python實現釘釘機器人自動打卡天天早下班

2022-06-09 22:01:34

一,新建釘釘機器人

1.釘釘群右上角點選群設定,選擇智慧群助手,點選新增機器人,選擇自定義機器人;

2.給機器人起個名字,訊息推播開啟,複製出 webhook,後面會用到,勾選自定義關鍵詞,填寫關鍵詞(關鍵詞可以隨便填寫,但是一定要記住,後面會用);

二,釘釘機器人傳送訊息

url 就是建立機器人時的 webhook,data 中的 atMobiles 可填寫多個手機號,傳送的訊息會直接 @ 這個人,text 的 content 裡面一定要加上建立機器人時設定的關鍵詞,msgtype 意思時文字格式,也可以 link 格式,就可以放連結了;

def send_text(self):
        url = "https://oapi.dingtalk.com/robot/send?access_token=43c4dab2ac31125e605c458b4b9561a73"
        headers = {'Content-Type': 'application/json'}
        data = {"at": {"atMobiles":["18206264857"],"atUserIds":["user123"],"isAtAll": False},
                "text": {"content":"砍價小程式介面自動化測試"},"msgtype":"text"},"msgtype":"text"}
        requests.post(url,headers=headers,data=json.dumps(data))

三,釘釘機器人實際的應用

1.監控介面自動化結果

實現思路是:jenkins 定時執行自動化——執行完後生成 html 報告——BeautifulSoup 模組解析 html 報告——傳送釘釘訊息

如下程式碼:

解析 html 的模組:

from common.handle_path import html_path
from bs4 import BeautifulSoup
class GetHtml:
    """
    讀取測試報告,解析html  獲得測試用例總數,通過數等,傳送到釘釘
    """
    def get_total(self):
        with open(html_path, "r", encoding="utf-8") as f:
            file = f.read()
            soup = BeautifulSoup(file, 'html.parser')  # 使用BeautifulSoup庫解析網頁內容
            item = soup.find_all("p")[1].string  # 使用BeautifulSoup庫的標籤方法找到你需要的內容
            return str(item)
    def get_pass(self):
        with open(html_path, "r", encoding="utf-8") as f:
            file = f.read()
            soup = BeautifulSoup(file, 'html.parser')  # 使用BeautifulSoup庫解析網頁內容
            item = soup.find_all("span",class_="passed")[0].string  # 使用BeautifulSoup庫的標籤方法找到你需要的內容
            return str(item)
    def get_skipped(self):
        with open(html_path, "r", encoding="utf-8") as f:
            file = f.read()
            soup = BeautifulSoup(file, 'html.parser')  # 使用BeautifulSoup庫解析網頁內容
            item = soup.find_all("span",class_="skipped")[0].string  # 使用BeautifulSoup庫的標籤方法找到你需要的內容
            return str(item)
    def get_failed(self):
        with open(html_path, "r", encoding="utf-8") as f:
            file = f.read()
            soup = BeautifulSoup(file, 'html.parser')  # 使用BeautifulSoup庫解析網頁內容
            item = soup.find_all("span",class_="failed")[0].string  # 使用BeautifulSoup庫的標籤方法找到你需要的內容
            return str(item)
    def get_error(self):
        with open(html_path, "r", encoding="utf-8") as f:
            file = f.read()
            soup = BeautifulSoup(file, 'html.parser')  # 使用BeautifulSoup庫解析網頁內容
            item = soup.find_all("span",class_="error")[0].string  # 使用BeautifulSoup庫的標籤方法找到你需要的內容
            return str(item)
    def get_xfailed(self):
        with open(html_path, "r", encoding="utf-8") as f:
            file = f.read()
            soup = BeautifulSoup(file, 'html.parser')  # 使用BeautifulSoup庫解析網頁內容
            item = soup.find_all("span",class_="xfailed")[0].string  # 使用BeautifulSoup庫的標籤方法找到你需要的內容
            return str(item)
    def get_xpassed(self):
        with open(html_path, "r", encoding="utf-8") as f:
            file = f.read()
            soup = BeautifulSoup(file, 'html.parser')  # 使用BeautifulSoup庫解析網頁內容
            item = soup.find_all("span",class_="xpassed")[0].string  # 使用BeautifulSoup庫的標籤方法找到你需要的內容
            return str(item)
if __name__ == '__main__':
    t = GetHtml()
    t.get_xpassed()

如下程式碼:

傳送釘釘訊息的模組:

import requests
import json
from common.handle_readhtml import GetHtml
class SendMassage:
    """
    傳送測試結果到釘釘群
    """
    result = GetHtml()
    total = result.get_total()
    passed = result.get_pass()
    skipped = result.get_skipped()
    failed = result.get_failed()
    error = result.get_error()
    xfailed = result.get_xfailed()
    xpassed = result.get_xpassed()
    def send_text(self):
        url = "https://oapi.dingtalk.com/robot/send?access_token=43c4dab2ac3152e605c458b4b9561a73"
        headers = {'Content-Type': 'application/json'}
        data = {"at": {"atMobiles":["18206233880"],"atUserIds":["user123"],"isAtAll": False},
                "text": {"content":"砍價小程式介面自動化測試 n total       : {}n passed   : {},n skipped : {},n failed    : {},n error     : {},n xfailed   : {},n xpassed : {}".format(self.total,self.passed,self.skipped,self.failed,self.error,self.xfailed,self.xpassed)},"msgtype":"text"}
        requests.post(url,headers=headers,data=json.dumps(data))
if __name__ == '__main__':
    s = SendMassage()
    s.send_text()

jenkins 設定的 shell 為:

先執行介面自動化指令碼,等待一會然後傳送釘釘訊息;

${PYTHON} main.py
sleep 100
${PYTHON} handle_dingding.py

介面自動化發釘釘群訊息還可以再優化,比如可以加上斷言失敗的錯誤紀錄檔等;

2,監控 qa 環境錯誤紀錄檔

這裡貼上週遊大佬的一篇部落格:https://www.jb51.net/article/250972.htm

此處傳送的 qq 郵件,訊息檢視不方便,且不好共用,可以優化為發釘釘群訊息,然後將開發也拉到群裡,提高效率;

3,jira 上有釘釘機器人外掛,可以每天傳送訊息 @ 某某開發 還有 N 個待處理 bug,@ 某某測試 還有 N 個待驗證 bug,以及監控看板指標達到閾值報警等;

以上就是python實現釘釘機器人自動打卡天天下早班的詳細內容,更多關於python釘釘機器人打卡的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com