前言:不轻易评价别人是一种修养;不活在别人的评价里是一种智慧。

此篇主要介绍,如何发送测试报告邮件

核心代码

import smtplib
from email.mime.text import MIMEText

body_str = '''
<h3 align="center">自动化测试报告</h3>
<table border="2" align="center" width="50%",height="400">
<tr><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
'''
# msg = MIMEText('hello,P1P2','plain','utf-8')
msg = MIMEText(body_str,'html','utf-8')
msg['from'] = "***@qq.com"      #发件人
msg['to'] = "***@qq.com"      #收件人
msg['Cc'] = '***@qq.com'      #抄送人
msg['subject'] = '主题'     #主题名

smtp = smtplib.SMTP()
smtp.connect( "smtp.qq.com" )
smtp.login( user="***@qq.com" ,password='****' )     #发件人邮箱、授权码
smtp.sendmail( "***@qq.com",["***@qq.com",'***@qq.com'],msg.as_string() )

具体步骤:

1、配置文件内——添加配置

[email]
# 邮箱服务器
smtp_server = smtp.qq.com
# 邮箱账号
smtp_sender = ***@qq.com
# 授权码
smtp_password = ***
# 收件人
smtp_receiver = ***@qq.com
# 抄送人
smtp_cc = ***01@qq.com,***02@qq.com
# 邮件主题
smtp_subject = 接口自动化测试报告
#配置工具模块中对应添加方法
 @property
    def REPORT_PATH(self):
        report_path_value = self.cfg.get('path','REPORT_PATH')
        return report_path_value

    @property
    def CASE_PATH(self):
        case_path_value = self.cfg.get('path','CASE_PATH')
        return case_path_value

    @property
    def SMTP_SERVER(self):
        smtp_server_value = self.cfg.get('email', 'smtp_server')
        return smtp_server_value

    @property
    def SMTP_SENDER(self):
        smtp_sender_value = self.cfg.get('email', 'smtp_sender')
        return smtp_sender_value

    @property
    def SMTP_PASSWORD(self):
        smtp_password_value = self.cfg.get('email', 'smtp_password')
        return smtp_password_value

    @property
    def SMTP_RECEIVER(self):
        smtp_receiver_value = self.cfg.get('email', 'smtp_receiver')
        return smtp_receiver_value

    @property
    def SMTP_CC(self):
        smtp_cc_value = self.cfg.get('email', 'smtp_cc')
        return smtp_cc_value

    @property
    def SMTP_SUBJECT(self):
        smtp_subject_value = self.cfg.get('email', 'smtp_subject')
        return smtp_subject_value

2、整合邮件模块

import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from common.localconfig_utils import local_config

class EmailUtils():
    def __init__(self,smtp_body,smtp_attch_path=None):
       self.smtp_server = local_config.SMTP_SERVER
       self.smtp_sender = local_config.SMTP_SENDER
       self.smtp_password = local_config.SMTP_PASSWORD
       self.smtp_receiver = local_config.SMTP_RECEIVER
       self.smtp_cc = local_config.SMTP_CC
       self.smtp_subject = local_config.SMTP_SUBJECT
       self.smtp_body = smtp_body
       self.smtp_attch = smtp_attch_path

    def mail_message_body(self):
        message = MIMEMultipart()
        message['from'] = self.smtp_sender
        message['to'] = self.smtp_receiver
        message['Cc'] = self.smtp_cc
        message['subject'] = self.smtp_subject
        message.attach( MIMEText(self.smtp_body,'html','utf-8') )
        if self.smtp_attch:
            attach_file = MIMEText(open(self.smtp_attch, 'rb').read(), 'base64', 'utf-8')
            attach_file['Content-Type'] = 'application/octet-stream'
            attach_file.add_header('Content-Disposition', 'attachment', filename=('gbk', '', os.path.basename(self.smtp_attch)))
            message.attach(attach_file)
        return message

    def send_mail(self):
        smtp = smtplib.SMTP()
        smtp.connect(self.smtp_server)
        smtp.login(user=self.smtp_sender, password=self.smtp_password)
        smtp.sendmail(self.smtp_sender,self.smtp_receiver.split(",")+ self.smtp_cc.split(","), self.mail_message_body().as_string())

if __name__=='__main__':
    html_path = os.path.dirname(__file__) + '/../test_reports/P1P2接口自动化测试报告V1.4/P1P2接口自动化测试报告V1.4.html'
    EmailUtils('<h3 align="center">自动化测试报告</h3>',html_path).send_mail()

 

posted on 2020-07-19 16:50  喵小超  阅读(348)  评论(0编辑  收藏  举报