美文网首页自动化测试自动化测试之路python自学
python项目实战--sendEmail发送邮件(七)

python项目实战--sendEmail发送邮件(七)

作者: orange_ade | 来源:发表于2019-11-15 13:12 被阅读0次
一、文件新建

上篇完成了所有测试用例执行后,接着我们需要将测试的最终结果以邮件形式发送到指定邮箱。

  • 在原globalparameter.py文件最下方新增代码:
# 设置发送测试报告的邮箱、用户名和密码
email_name = '****系统接口自动化测试报告:'
smtp_sever = 'smtp.qq.com'  # 邮箱SMTP服务,各大运营商的smtp服务可以在网上找,都可以用并修改
port = 465
email_username = "zijiyouxiang@qq.com"  # 发件人名称
email_password = "****************"  # 发件人邮箱授权密码
email_To = 'zijiyouxiang@qq.com'  # 收件人
  • 在common目录下新增文件:sendEmail.py
# coding:utf-8
# 邮件发送最新的测试报告

import os, smtplib, os.path
from config import globalparameter as gl
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

class SendEmail:    
    # 定义邮件内容
    def email_init(self, report, reportName):
        with open(report, 'rb')as f:
            mail_body = f.read()

        # 创建一个带附件的邮件实例
        msg = MIMEMultipart()
        # 以测试报告作为邮件正文
        msg.attach(MIMEText(mail_body, 'html', 'utf-8'))
        report_file = MIMEText(mail_body, 'html', 'utf-8')
        # 定义附件名称(附件的名称可以随便定义,你写的是什么邮件里面显示的就是什么)
        report_file["Content-Disposition"] = 'attachment;filename=' + reportName
        msg.attach(report_file)  # 添加附件
        msg['Subject'] = gl.email_name + reportName  # 邮件标题
        msg['From'] = gl.email_username  # 发件人
        msg['To'] = gl.email_To  # 收件人列表
        try:
            server = smtplib.SMTP_SSL(gl.smtp_sever, gl.port)
            server.login(gl.email_username, gl.email_password)
            server.sendmail(msg['From'], msg['To'].split(';'), msg.as_string())
            server.quit()
        except smtplib.SMTPException:
            print(u'邮件发送测试报告失败 at' + __file__)

    def sendReport(self):
        # 找到最新的测试报告并发送
        report_list = os.listdir(gl.report_path)
        report_list.sort(
            key=lambda fn: os.path.getmtime(gl.report_path + fn) if not os.path.isdir(gl.report_path + fn) else 0)
        new_report = os.path.join(gl.report_path, report_list[-1])
        # 发送邮件
        self.email_init(new_report, report_list[-1])

  • run_All.py文件中增加代码:
    # 发送邮件
    time.sleep(5)  # 设置睡眠时间,等待测试报告生成完毕
    email = sendEmail.SendEmail()
    email.sendReport()
二、代码解释

具体含义已在代码里备注,sendEmail.py文件编写邮件发送方法,调用globalparamter.py文件中的邮件配置,最后再由runAll.py中去执行sendEmail.py文件中的sendEmail()方法,执行发送邮件。

相关文章

网友评论

    本文标题:python项目实战--sendEmail发送邮件(七)

    本文链接:https://www.haomeiwen.com/subject/uvbjictx.html