python+selenium+unittest测试框架4-邮件发送最新测试报告

Posted 旭旭杂货店

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python+selenium+unittest测试框架4-邮件发送最新测试报告相关的知识,希望对你有一定的参考价值。

邮件发送最新测试报告

示例:

技术分享图片
import HTMLTestRunner
import unittest
import os
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def allcase():
    ‘‘‘加载测试用例‘‘‘
    discover = unittest.defaultTestLoader.discover(casepath,
                                                   pattern="case*.py",
                                                   top_level_dir=None)
    return discover

def run_case():
    ‘‘‘执行测试用例,生成测试报告‘‘‘
    now = time.strftime("%Y_%m_%d %H_%M_%S")
    htmlreportpath = os.path.join(reportpath, now+"result.html")
    fp = open(htmlreportpath, "wb")
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
                                           title=u"自动化测试报告",
                                           description=u"测试用例执行情况")
    # 调用allcase函数返回值
    runner.run(allcase())
    fp.close()

def get_report_file(reportpath):
    ‘‘‘获取最新的测试报告‘‘‘
    lists = os.listdir(reportpath)
    lists.sort(key=lambda fn: os.path.getmtime(os.path.join(reportpath, fn)))
    # 找到最新生成的报告文件
    reportfile = os.path.join(reportpath, lists[-1])
    return reportfile

def send_mail(sender, psw, receiver, smtpserver,reportfile, port=465):
    ‘‘‘发送最新的测试报告内容‘‘‘
    #打开测试报告
    with open(reportfile, "rb") as f:
        mail_body = f.read()
    # 定义邮件内容
    msg = MIMEMultipart()
    body = MIMEText(mail_body, _subtype=html‘, _charset=utf-8)
    msg[Subject‘] = u"自动化测试报告"
    msg["from"] = sender
    msg["to"] = receiver
    msg.attach(body)
    # 添加附件
    att = MIMEText(open(reportfile, "rb").read(), "base64", "utf-8")
    att["Content-Type"] = "application/octet-stream"
    att["Content-Disposition"] = attachment; filename= "report.html"
    msg.attach(att)
    try:
        smtp = smtplib.SMTP_SSL(smtpserver, port)
    except:
        smtp = smtplib.SMTP()
        smtp.connect(smtpserver,port)
    # 用户名密码
    smtp.login(sender, psw)
    smtp.sendmail(sender, receiver, msg.as_string())
    smtp.quit()

if __name__ == __main__:
    casepath = os.path.join(os.getcwd(),"case") #测试用例存放路径
    reportpath = os.path.join(os.getcwd(),"report") #测试报告存放路径
    run_case() #执行测试用例
    reportfile = get_report_file(reportpath) 
    smtpserver = "smtp.qq.com"
    sender = "[email protected]" # 自己的账号
    psw = "password" #自己的密码
    receiver = "[email protected]" #对方的账号
    send_mail(sender, psw, receiver, smtpserver,reportfile)
技术分享图片

以上是关于python+selenium+unittest测试框架4-邮件发送最新测试报告的主要内容,如果未能解决你的问题,请参考以下文章

python+selenium+unittest测试框架1-unittest单元测试框架和断言

Python+Selenium ----unittest单元测试框架

python+selenium+unittest

selenium + python自动化测试unittest框架学习selenium原理及应用

python+selenium+unittest有用文章

python+selenium+unittest测试框架4-邮件发送最新测试报告