python自动化测试报告以邮件形式自动发送
一、遍历报告文件夹内容并按照时间倒叙排列,取第一条文件(最新测试报告)
源码
import os, glob, time
# 文件路径
path= r'C:\Program Files\JetBrains\PyCharm\pythonProject\log'
# 返回指定的文件夹包含的文件或文件夹的名字的列表。
# os.path.join(path1[, path2[, ...]]) 把目录和文件名合成一个路径
s= sorted(glob.glob(os.path.join(path, '*')),
key=lambda x: time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(os.path.getctime(x))),
reverse=True)
# 输出第一个文件
first= s[0]
print(first)
# 打开文件
# os.startfile(first)
二、发送邮箱,相关人员,包含标题,正文,附件(这边使用的是Coremail论客邮箱)
import smtplib
from email.mime.textimport MIMEText
from email.headerimport Header
from email.mime.multipartimport MIMEMultipart
# 发送邮箱服务器
smtpsever= 'c1.icoremail.net'
# 发送邮箱用户密码
user= 'xxxxx@vsc.com'
password= 'passwd'
# 发送与接收邮箱,可以多个逗号隔开
sender= 'dingjj.nms@vsc.com'
receive= 'dingjj.nms@vsc.com'
# 发送邮件主题和内容变量
subject= 'python selenium自动化测试报告'
content= '<html><h1 style="color:green">邮件测试'
# 构造附件内容,由于GBK会报错,所以转换encoding="utf-8"格式
sendfile= open(first, 'r', encoding="utf-8").read()
att= MIMEText(str(sendfile), 'base64', 'utf-8')
att['Content-Type'] = 'application/octet-stream'
att['Content-Disposition'] = 'attachment;filename="log_20211221_183947.html"'
# 构建发送与接收信息
msgRoot= MIMEMultipart()
# 调用主题
msgRoot['subject'] = subject
# 调用正文
msgRoot.attach(MIMEText(content, 'html', 'utf-8'))
# 调用邮箱账号密码
msgRoot['From'] = sender
# 调用接收人
msgRoot['To'] = ','.join(receive)
msgRoot.attach(att)
# SSL协议端口号要用465
smtp= smtplib.SMTP_SSL(smtpsever, 465)
smtp.helo(smtpsever)
smtp.ehlo(smtpsever)
smtp.login(user, password)
# msg为邮件正文,msgRoot为附件
print('开始发送邮件...')
smtp.sendmail(sender, receive, msgRoot.as_string())
smtp.quit()
print('邮件发送成功!')