pytest_api/tools/sendmail_control.py

93 lines
3.3 KiB
Python
Raw Normal View History

2023-02-02 11:07:43 +08:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from tools.yaml_control import GetYamlData
from config.settings import ConfigHandler
from tools.allure_report_control import CaseCount, AllureFileClean
class SendEmail(object):
def __init__(self):
self.getData = GetYamlData(ConfigHandler.config_path).get_yaml_data()['email']
self.send_user = self.getData['send_user'] # 发件人
self.email_host = self.getData['email_host'] # QQ 邮件 STAMP 服务器地址
self.key = self.getData['stmp_key'] # STAMP 授权码
self.name = GetYamlData(ConfigHandler.config_path).get_yaml_data()['ProjectName'][0]
self.allureData = CaseCount()
self.PASS = self.allureData.pass_count()
self.FAILED = self.allureData.failed_count()
self.BROKEN = self.allureData.broken_count()
self.SKIP = self.allureData.skipped_count()
self.TOTAL = self.allureData.total_count()
self.RATE = self.allureData.pass_rate()
self.CaseDetail = AllureFileClean().get_failed_cases_detail()
def send_mail(self, user_list: list, sub, content):
"""
@param user_list: 发件人邮箱
@param sub:
@param content: 发送内容
@return:
"""
user = "郭林莉" + "<" + self.send_user + ">"
message = MIMEText(content, _subtype='plain', _charset='utf-8')
message['Subject'] = sub
message['From'] = user
message['To'] = ";".join(user_list)
server = smtplib.SMTP()
server.connect(self.email_host)
server.login(self.send_user, self.key)
server.sendmail(user, user_list, message.as_string())
server.close()
def error_mail(self, error_message):
"""
执行异常邮件通知
@param error_message: 报错信息
@return:
"""
emali = self.getData['send_list']
user_list = emali.split(',') # 多个邮箱发送config文件中直接添加 '806029174@qq.com'
sub = self.name + "接口自动化执行异常通知"
content = "自动化测试执行完毕,程序中发现异常,请悉知。报错信息如下:\n{0}".format(error_message)
self.send_mail(user_list, sub, content)
def send_main(self):
"""
发送邮件
:return:
"""
emali = self.getData["send_list"]
user_list = emali.split(',') # 多个邮箱发送yaml文件中直接添加 '806029174@qq.com'
sub = self.name + "接口自动化报告"
content = """
各位同事, 大家好:
自动化用例执行完成执行结果如下:
用例运行总数: {}
通过用例个数: {}
失败用例个数: {}
异常用例个数: {}
跳过用例个数: {}
: {} %
{}
**********************************
jenkins地址https://121.xx.xx.47:8989/login
详细情况可登录jenkins平台查看非相关负责人员可忽略此消息谢谢
""".format(self.TOTAL, self.PASS, self.FAILED, self.BROKEN, self.SKIP, self.RATE, self.CaseDetail)
self.send_mail(user_list, sub, content)
if __name__ == '__main__':
SendEmail().send_main()