一、文件新建
上篇完成了所有测试用例执行后,接着我们需要将测试的最终结果以邮件形式发送到指定邮箱。
- 在原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()方法,执行发送邮件。
网友评论