# -*- coding: utf-8 -*-#
from typing import Any
from dingtalkchatbot.chatbot import DingtalkChatbot, FeedLink
# 钉钉发送消息模块
class DingTalkPack:
def __init__(self, webhook: str, secret: str, at_mobiles: list = None):
self.webhook=webhook
self.secret=secret
self.at_mobiles=at_mobiles
self.ding_news = DingtalkChatbot( webhook=self.webhook, secret=self.secret, pc_slide=False, fail_notice=False)
def send_text(self, msg: str, mobiles: list = None) -> None:
"""
发送文本信息
:param msg: 文本内容
:param mobiles: 艾特用户电话
:return:
"""
if not mobiles:
self.ding_news.send_text(msg=msg, is_at_all=True)
else:
if isinstance(mobiles, list):
self.ding_news.send_text(msg=msg, at_mobiles=mobiles)
else:
raise TypeError("mobiles类型错误 不是list类型.")
def send_link(self, title: str, text: str, message_url: str, pic_url: str) -> None:
"""
发送link通知
:return:
"""
try:
self.ding_news.send_link(title=title, text=text, message_url=message_url, pic_url=pic_url)
except Exception:
raise Exception("发送link类型消息失败")
def send_markdown(self, title: str, msg: str, mobiles: list = None) -> None:
"""
:param mobiles:
:param title:
:param msg:
markdown 格式
"""
if mobiles is None:
self.ding_news.send_markdown(title=title, text=msg, is_at_all=True)
else:
if isinstance(mobiles, list):
self.ding_news.send_markdown(title=title, text=msg, at_mobiles=mobiles)
else:
raise TypeError("mobiles类型错误 不是list类型.")
def feed_link(self, title: str, message_url: str, pic_url: str) -> Any:
"""
发送link类型
:param title:
:param message_url:
:param pic_url:
:return:
"""
return FeedLink(title=title, message_url=message_url, pic_url=pic_url)
def send_feed_link(self, *arg) -> None:
"""
发送feedlink类型
:param arg:
:return:
"""
try:
self.ding_news.send_feed_card(list(arg))
except Exception:
raise Exception("发送feedlink类型消息失败")
def send_dingding(self,
title,
environment,
tester,
total,
pass_num,
fail_num,
error_num,
skip_num,
rate,
duration,
):
"""
发送钉钉通知
:return:
"""
self.ding_news.send_markdown(
title=f'【{title}测试执行完毕提醒',
text=f'''[通知] 测试执行完成 \n\n
--- \n\n
执行环境:{environment}\n\n
执行人员:@{tester}\n\n
--- \n\n
运行总数:{total}\n\n
通过数量:{pass_num}\n\n
失败数量:{fail_num}\n\n
异常数量:{error_num}\n\n
跳过数量:{skip_num}\n\n
成功率为:{rate}\n\n
运行时间:{duration}\n\n
**********************************\n\n
详细情况可登录平台查看,非相关负责人员可忽略此消息。谢谢。
''',
at_mobiles=self.at_mobiles
)