在web自动化测试过程中,常常需要定时执行,得到测试报告,然后通过邮件自动发送给指定的人员查看执行结果。
lastest_report.py
# -- coding: utf-8 --
import os
#存放报告的位置
report_dir='./Test_Report'
def Latest_Report(report_dir):
#os.listdir()方法用于返回指定文件夹包含文件或文件名字列表
lists=os.listdir(report_dir)
#按照时间顺序对该目录文件夹下面的文件进行排序
lists.sort(key=lambda fn:os.path.getatime(report_dir+'\\'+fn))
file=os.path.join(report_dir,lists[-1])
return file
sendEmail.py
# -- coding: utf-8 --
import smtplib#发送邮件模板
from email.mime.text import MIMEText#定义邮件内容
from email.header import Header#定义邮件标题
from email.mime.multipart import MIMEMultipart#用于传送附件
class sendSmptEmail():
def send_email(Latest_Report):
#读取最新测试报告的内容
with open(Latest_Report,'rb') as e:
mail_content=e.read()
e.close()
smtpserver = 'smtp.163.com' # 发送邮件所用的服务器
password = '发送者邮箱密码'
# 发送邮件地址和接收地址
sender = '发送者邮箱'
receives = ['接收者邮箱1', '接收者邮箱2']
# 定义邮件标题和内容
subject = 'O2O后台自动化测试报告'
msgRoot = MIMEMultipart()
msgRoot['Subject'] = Header(subject, 'utf-8') # 标题类型
msgRoot['From'] = sender
msgRoot['To'] = ','.join(receives)
# 发送附件
att = MIMEText(mail_content, "base64", "utf-8")
att["Content-Type"] = "application/octet-stream"
att["Content-Disposition"] = 'attachment; filename="test_report.html"' # 定义附件名称
msgRoot.attach(att) # 挂起
smtp = smtplib.SMTP_SSL(smtpserver, 994) # SSL协议端口号要使用465或994
smtp.helo(smtpserver) # HELO向服务器标志用户身份
smtp.ehlo(smtpserver) # 服务器返回结果确认
smtp.login(user, password)
print('start send Email...')
smtp.sendmail(sender, receives, msgRoot.as_string()) # 发送地址;邮件接收地址;发送信息
smtp.quit()
print('send end...')
执行发送邮件
report_dir = './test_report/'
sendSmtpEmail.sendSmptEmail.send_email(lastest_report.Latest_Report(report_dir))