pytest_api/tools/sendmail_control.py

93 lines
3.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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()