python自动发送邮件

这篇博客展示了如何使用Python进行自动化测试,并将生成的测试日志通过电子邮件发送。首先,它定位测试用例和日志文件,然后执行测试用例,创建测试报告。之后,找到最新的日志文件并读取其内容,最后通过SMTP服务器发送带有日志内容的HTML邮件。
摘要由CSDN通过智能技术生成
# 综合使用自动发邮件
# 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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值