博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件
阅读量:4337 次
发布时间:2019-06-07

本文共 2992 字,大约阅读时间需要 9 分钟。

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

 

import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom HTMLTestRunner import HTMLTestRunnerfrom email.header import Headerimport unittestimport time,os#==============定义发送邮件 ===============def send_mail(file_new):    f = open(file_new,'rb')    #读取测试报告正文    mail_body = f.read()    f.close()    # 发送邮箱服务器    smtpserver = "smtp.163.com"    # 发件人邮箱    sender = 'qwe_test@163.com'    # 接收人邮箱    receiver = 'qwe@163.com'    # 发送邮箱用户信息    username = 'qwe@163.com'    # 客户端授权码    password = 'qweqw18'    #通过  模块构造的带附件的邮件如图    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('qwet@163.com', 'qewq@163.com', msg.as_string())    # smtp.quit()    # print("email has send out !")    #一样的逻辑,不一样的写法导致上面的发送失败,下面这种发送成功,所以要使用msg['from']这种写法    msg['from'] = 'qweqt@163.com'  # 发送邮件的人    msg['to'] = 'q10@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_newif __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)

 

转载于:https://www.cnblogs.com/Skyyj/p/6720814.html

你可能感兴趣的文章
小D课堂 - 新版本微服务springcloud+Docker教程_6-01 微服务网关介绍和使用场景
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-05熔断降级服务异常报警通知
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_6-03 高级篇幅之zuul常用问题分析
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-08 断路器监控仪表参数
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-3.热部署在Eclipse和IDE里面的使用...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-3.在线教育站点需求分析和架构设计...
查看>>
UI基础--烟花动画
查看>>
oracle之三 自动任务调度
查看>>
Android dex分包方案
查看>>
ThreadLocal为什么要用WeakReference
查看>>
删除本地文件
查看>>
FOC实现概述
查看>>
base64编码的图片字节流存入html页面中的显示
查看>>
这个大学时代的博客不在维护了,请移步到我的新博客
查看>>
GUI学习之二十一——QSlider、QScroll、QDial学习总结
查看>>
gethostbyname与sockaddr_in的完美组合
查看>>
kibana的query string syntax 笔记
查看>>
旋转变换(一)旋转矩阵
查看>>
thinkphp3.2.3 bug集锦
查看>>
[BZOJ 4010] 菜肴制作
查看>>