码迷,mamicode.com
首页 > 编程语言 > 详细

Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件

时间:2017-04-16 23:50:31      阅读:739      评论:0      收藏:0      [点我收藏+]

标签:sort   邮箱   stl   pen   format   lists   getcwd   dht   isp   

一下代码是自己结合教材,并结合以往用到的实例编写的代码,可以做为参考

 

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from HTMLTestRunner import HTMLTestRunner
from email.header import Header
import unittest
import time,os

#==============定义发送邮件 ===============

def send_mail(file_new):
    f = open(file_new,rb)
    #读取测试报告正文
    mail_body = f.read()
    f.close()
    # 发送邮箱服务器
    smtpserver = "smtp.163.com"
    # 发件人邮箱
    sender = wmqyyj_test@163.com
    # 接收人邮箱
    receiver = chinayyj2010@163.com
    # 发送邮箱用户信息
    username = wmqyyj_test@163.com
    # 客户端授权码
    password = WMQyyj2018

    #通过  模块构造的带附件的邮件如图
    msg = MIMEMultipart()
    #编写html类型的邮件正文,MIMEtext()用于定义邮件正文
    #发送正文
    text = MIMEText(mail_body, html, utf-8)
    text[Subject] = Header(自动化测试报告, utf-8)
    msg.attach(text)
    #发送附件
    #Header()用于定义邮件标题
    msg[Subject] = Header(自动化测试报告, utf-8)
    msg_file = MIMEText(mail_body, html, utf-8)
    msg_file[Content-Type] = application/octet-stream
    msg_file["Content-Disposition"] = attachment; filename="TestReport.html"
    msg.attach(msg_file)

# 如果只发正文的话,上面的代码 从password 下面到这段注释上面
# 全部替换为下面的两行代码即可,上面的代码是增加了发送附件的功能。
#     text = MIMEText(mail_body, ‘html‘, ‘utf-8‘)
#     text[‘Subject‘] = Header(‘自动化测试报告‘, ‘utf-8‘)


    #连接发送邮件
    # smtp = smtplib.SMTP()
    # smtp.connect(smtpserver)
    # smtp.login(username, password)
    # smtp.sendmail(‘wmqyyj_test@163.com‘, ‘chinayyj2010@163.com‘, msg.as_string())
    # smtp.quit()
    # print("email has send out !")

    #一样的逻辑,不一样的写法导致上面的发送失败,下面这种发送成功,所以要使用msg[‘from‘]这种写法
    msg[from] = wmqyyj_test@163.com  # 发送邮件的人
    msg[to] = chinayyj2010@163.com
    # smtp = smtplib.SMTP(‘smtp.163.com‘, 25)  # 连接服务器
    smtp = smtplib.SMTP()
    smtp.connect(smtp.163.com)
    smtp.login(username, password)  # 登录的用户名和密码
    smtp.sendmail(msg[from], msg[to], msg.as_string())  # 发送邮件
    smtp.quit()
    print(sendmail success)

#======================查找最新的测试报告==========================

def new_report(testreport):
    #方式1:
    # lists = os.listdir(testreport)
    # lists.sort(key = lambda fn: os.path.getmtime(testreport + ‘\\‘ + fn))
    # file_new = os.path.join(testreport,lists[-1])
    # print(file_new)
    # return file_new

    #方式2:
    dirs = os.listdir(testreport)
    dirs.sort()
    newreportname = dirs[-1]
    print(The new report name: {0}.format(newreportname))
    file_new = os.path.join(testreport, newreportname)
    return file_new

if __name__ == __main__:
    test_dir = os.path.join(os.getcwd(),test_case)
    #test_report = "D:/SProgram/PySpace/wmq/SendHtmlMail/report"
    test_report = os.path.join(os.getcwd(), report)
    discover = unittest.defaultTestLoader.discover(test_dir,pattern=test*.py)

    now = time.strftime("%Y-%m-%d-%H_%M_%S")
    filename = test_report+/result_+now+.html
    fp = open(filename,wb)
    runner = HTMLTestRunner(stream=fp,title="测试报告",description=用例执行情况:)
    runner.run(discover)
    fp.close()

    new_report = new_report(test_report)
    send_mail(new_report)

 

Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件

标签:sort   邮箱   stl   pen   format   lists   getcwd   dht   isp   

原文地址:http://www.cnblogs.com/Skyyj/p/6720814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!