【Web_接口测试_Python3_Webhook+飞书_推送消息】Webhook 顾名思义即网络钩子,也称为用户自定义 HTTP 回调函数(user-defined HTTP callbacks)

# !/usr/bin/env python3
# coding:utf-8

"""
飞书官方参考文档:https://open.feishu.cn/document/ukTMukTMukTM/ucTM5YjL3ETO24yNxkjN?lang=zh-CN
操作参考文档:https://sspai.com/post/68578
"""

# larkbot.py

import base64
import hashlib
import hmac
import re
import subprocess
from datetime import datetime

import requests

WEBHOOK_URL = "..."
WEBHOOK_SECRET = "your-webhook-sign-secret"
timestamp = int(datetime.now().timestamp())


class LarkBot:
    def __init__(self, secret: str) -> None:
        if not secret:
            raise ValueError("invalid secret key")
        self.secret = secret

    def gen_sign(self, timestamp: int) -> str:
        string_to_sign = '{}\n{}'.format(timestamp, self.secret)
        hmac_code = hmac.new(
            string_to_sign.encode("utf-8"), digestmod=hashlib.sha256
        ).digest()
        sign = base64.b64encode(hmac_code).decode('utf-8')
        return sign

    def send(self, content: str) -> None:
        timestamp = int(datetime.now().timestamp())
        sign = self.gen_sign(timestamp)

        # 文本
        params = {
            "timestamp": timestamp,
            "sign": sign,
            "msg_type": "text",
            "content": {"text": content},
        }
        # 卡片+链接
        car_params = {
            "msg_type": "interactive",
            "card": {
                "config": {
                    "wide_screen_mode": True,
                    "enable_forward": True
                },
                "elements": [{
                    "tag": "div",
                    "text": {
                        "content": content,
                        "tag": "lark_md"
                    }
                }, {
                    "actions": [{
                        "tag": "button",
                        "text": {
                            "content": "更多测试介绍:链接地址",
                            "tag": "lark_md"
                        },
                        "url": "https://www.baidu.com",
                        "type": "default",
                        "value": {}
                    }],
                    "tag": "action"
                }],
                "header": {
                    "title": {
                        "content": "今日测试推荐",
                        "tag": "plain_text"
                    }
                }
            }
        }
        resp = requests.post(url=WEBHOOK_URL, json=car_params)
        resp.raise_for_status()
        result = resp.json()
        if result.get("code") and result["code"] != 0:
            print(result["msg"])
            return
        print("飞书消息:消息推送成功")

    def get_ip_addr(self):
        # 利用正则表达式获取当前工位的电脑的 IP 字符串
        IPV4_PATTERN = r"IPv4.*: (.*?)\n"
        ipconfig = subprocess.run("ipconfig", capture_output=True, text=True).stdout
        ip = re.search(IPV4_PATTERN, ipconfig).group(1)  # IPv4 地址 . . . . . . . . . . . . : 10.114.20.199
        return ip


if __name__ == '__main__':
    bot = LarkBot(secret=WEBHOOK_SECRET)
    ip = bot.get_ip_addr()
    bot.send(content=f"当前工位的电脑 IP 是:{ip}")

【Web_接口测试_Python3_Webhook+飞书_推送消息】Webhook 顾名思义即网络钩子,也称为用户自定义 HTTP 回调函数(user-defined HTTP callbacks)_第1张图片 

 

你可能感兴趣的:(接口测试,python)