自动化测试学习之--整合测试报告发送指定邮箱

# 案例:将获取D:\PycharmProjects\Python1\unitest\unittest2\test_report生成的最新测试报告发送到指定邮箱。
import unittest
from BSTestRunner import BSTestRunner
import time
import smtplib                           #发送邮件模块
from email.mime.text import MIMEText    #定义邮件内容
from email.header import Header         #定义邮件标题
import os

#发送测试报告
def send_mail(latest_report):
    #打开测试报告
    f=open(latest_report,'rb')
    #读取内容
    mail_content=f.read()
    #关闭文件
    f.close()

    #发送邮箱服务器
    smtpserver='smtp.163.com'
    # 发送邮箱用户名密码(密码是授权密码)
    user = '[email protected]'
    password = '******'

    # 发送和接收邮箱
    sender = '[email protected]'
    receives = [[email protected]', '[email protected]']

    # 发送邮件主题和内容
    subject = 'Web Selenium 自动化测试报告'

    # HTML邮件正文
    msg = MIMEText(mail_content, 'html', 'utf-8')
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = sender
    msg['To'] = ','.join(receives)
    #SSL协议端口号要使用465
    smtp = smtplib.SMTP_SSL(smtpserver, 465)

    # HELO 向服务器标识用户身份
    smtp.helo(smtpserver)
    # 服务器返回结果确认
    smtp.ehlo(smtpserver)
    # 登录邮箱服务器用户名和密码
    smtp.login(user, password)

    print("开始发送邮件...")
    smtp.sendmail(sender, receives, msg.as_string())
    smtp.quit()
    print("邮件发送成功!")

#在测试报告文件夹中读取最新的测试报告
def latest_report(report_dir):
    #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
    lists = os.listdir(report_dir)
    # 按时间顺序对该目录文件夹下面的文件进行排序
    lists.sort(key=lambda fn: os.path.getatime(report_dir + '\\' + fn))
    print(("new report is :" + lists[-1]))
    #输出最新报告的路径
    file = os.path.join(report_dir, lists[-1])
    print(file)
    return file

if __name__ == '__main__':
    # 测试用例路径
    test_dir=r'D:\PycharmProjects\Python1\unitest\unittest2'
    # 测试报告路径
    report_dir=r'D:\PycharmProjects\Python1\unitest\unittest2\test_report'

    #运行测试用例
    discover = unittest.defaultTestLoader.discover(test_dir, pattern="test*.py")
    now = time.strftime("%Y-%m-%d %H_%M_%S")
    report_name = report_dir + '/' + now + 'result.html'

    with open(report_name, 'wb') as f:
        runner = BSTestRunner(stream=f, title="Test Report", description="baidu search")
        runner.run(discover)
    f.close()

    #获取最新测试报告
    latest_report=latest_report(report_dir)
    #发送邮件报告
    send_mail(latest_report)

163邮箱发生失败的常见问题

http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html

 

你可能感兴趣的:(自动化测试)