# 综合使用自动发邮件
# 1.首先把要测测的用例文件都放到一个指定文件目录
# 2.把生成的的日志文件也存放到指定的文件目录
# 3.实现找到文件目录里面最新文件
# 4.调用发送邮件的功能
#找到用例所在的文件夹
import os
import smtplib
import time
import unittest
# 格式化邮件内容
from email.mime.text import MIMEText
# 设置邮件主题
from email.header import Header
from HTMLTestRunner import HTMLTestRunner
#找到最新的日志在给定的文件夹中
def find_new_log(testlog):
lists = os.listdir(testlog)
lists.sort(key=lambda fn:os.path.getmtime(testlog+'\\'+fn))
file_new = os.path.join(testlog,lists[-1])
print(file_new)
return file_new
#定义发送邮件的功能
def send_email(filelog):
#获取日志文件的内容
fp = open(filelog,'rb')
mail_body = fp.read()
fp.close()
#发送邮件
# 定义邮件服务器
smtp_server = 'smtp.qq.com'
user_name = '1760204760@qq.com'
password = 'hjwwvrmafbdrcbba' #授权码
sender = '1760204760@qq.com'
receiver = ['1760204760@qq.com']
# 头信息
Subject = 'Python自动化测试'
# 信的内容
msg = MIMEText(mail_body,'html','utf-8')
msg['From'] = "{}".format(sender)
msg['TO'] = ",".join(receiver)
msg['Subject'] = Header(Subject,'utf-8')
try:
# 实例化
smtp = smtplib.SMTP_SSL(smtp_server,465)
smtp.login(user_name,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()
print('邮件发送成功')
except smtplib.SMTPException as e:
print(e,'邮件发送失败')
#调用上面的函数,实现自动测试,自动发邮件
if __name__ == '__main__':
#设置文件路径
test_case = 'C:\\Users\\17602\\Desktop\\test_case'
test_log = 'C:\\Users\\17602\\Desktop\\test_log'
#设置自动找到目录里所有的测试用例批量执行
discover = unittest.defaultTestLoader.discover(test_case,pattern='test*.py',top_level_dir=None)
#设置文件的名字,以当前时间为名
now = time.strftime('%y+%m+%d %H_%M_%S' , time.localtime())
filename = test_log + '\\' + now +'_log.html'
#执行测试用例,生成测试日志
file = open(filename,'wb')
runner = HTMLTestRunner(stream=file,
title='自动化测试报告',
description='用例执行报告')
runner.run(discover)
file.close()
#找到最新日志
new_log = find_new_log(test_log)
#发送日志
send_email(new_log)
python自动发送邮件
最新推荐文章于 2023-08-04 14:21:08 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)