当前位置: 首页 > news >正文

已附件的形式发送测试报告

上一篇中提到了已邮件形式发送报告,但是发送的报告不能查看具体的内容,如果想看到具体的内容,需要已附件的形式发送报告

测试用例Demo不用修改,只需要修改发送邮件的代码,具体的就是引入了MIMEMultipart类,邮件中的内容是分段存储的,附件是related类型。

代码如下:

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

# 发送邮件
def sendReport(file_path):
    """发送带附件的邮件"""
    sendfile = open(file_path,"rb").read()
    # 创建一个MIME类型的文件
    # base64:就是一种基于64个可打印字符来表示二进制数据的方法
    msg = MIMEText(sendfile,"base64","utf-8")
    # 附件类型,不知道附件类型是什么的时候就用这个
    # 具体可以参考:http://tool.oschina.net/commons
    msg["Content-Type"] = "application/octet-stream"
    # 这个主要是在下载时,默认的文件名为result.html
    # 具体可以详见content-Disposition的相关知识
    msg["content-Disposition"] = "attachment;filename=result.html"
    # 附件的存储类型
    msgRoot = MIMEMultipart("related")
    msgRoot.attach(msg)
    # 标题
    msg["Subject"] = Header("自动化测试报告",'utf-8')
    # 发件人
    msg["From"] = "用户名"
    # 收件人,如果给多人发送邮件,以分号隔开
    msg["To"] = "用户名"
    # SMTP协议,调用smtp.qq.com
    smtp = smtplib.SMTP('smtp.126.com')
    # 登陆邮箱,参数为用户名和授权码
    smtp.login("用户名", "授权码")
    # 发件人给接收者发送邮件,收件人以分号隔开,内容以字符串形式
    smtp.sendmail(msg["From"],msg["To"].split(";"),msg.as_string())
    # 退出
    smtp.quit()

# 查找测试报告目录,找到最新的测试报告文件,把最新的测试报告文件作为邮件发送内容
def newReport(testReport):
    # 返回测试报告所在目录下所有的文件夹
    lists = os.listdir(testReport)
    # 获得升序排列后的测试报告列表
    lists2 = sorted(lists)
    # 获得最后一个测试报告地址
    file_new = os.path.join(testReport,lists2[-1])
    print(file_new)
    return file_new

# 运行
if __name__ == "__main__":
    # 测试用例所在目录
    test_dir = "D:\\PythonDemo\\SeleniumProject\\Email"
    test_report = "D:\\testresult"
    # 加载测试用例所在目录下的bing.py测试用例文件
    discover = unittest.defaultTestLoader.discover(test_dir,pattern="bing.py")
    #获取当前时间
    now = time.strftime("%Y-%m-%d %H%M%S")
    # 测试报告名,测试结果路径+时间+result.html
    filename = test_report + '\\' + now + 'result.html'
    # 以只读的方式打开测试报告
    fp = open(filename,"wb")
    runner = HTMLTestRunner(stream=fp,title="测试报告",description="测试用例执行情况")
    # 执行测试用例,测试用例在discover中加载
    runner.run(discover)
    fp.close()

    # 拿到最新的测试报告
    new_report = newReport(test_report)
    #发送邮件
    sendReport(new_report)

  这样就以附件的形式发送了测试报告,便于查看具体的测试内容

转载于:https://www.cnblogs.com/bigbigtong/p/10274713.html

相关文章:

  • 我与51CTO博客园的第一次
  • PCA降维
  • PHP 全局变量
  • 朋友圈继续扩大!科蓝软件联合蚂蚁金服发布“移动金融逸平台”
  • MySQL面试题之如何优化一条有问题的SQL语句?
  • UOJ131 [NOI2015] 品酒大会
  • uoj#349. 【WC2018】即时战略(动态点分治)
  • 未来科技展亮相杭州 七大5G应用领域打开全新想象
  • 在Linux下创建文件,文件名中包含当前时间
  • Java源码解析 - ThreadPoolExecutor 线程池
  • 通过sys.objects查询SQL SERVER数据库改动内容
  • 共轭分布
  • 为什么要用IPython/Jupyter?
  • Java8实用技能
  • 悉尼将举办农历节庆典迎猪年
  • 【mysql】环境安装、服务启动、密码设置
  • ➹使用webpack配置多页面应用(MPA)
  • 4. 路由到控制器 - Laravel从零开始教程
  • echarts的各种常用效果展示
  • es6(二):字符串的扩展
  • httpie使用详解
  • javascript面向对象之创建对象
  • Java教程_软件开发基础
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Mocha测试初探
  • Python进阶细节
  • vagrant 添加本地 box 安装 laravel homestead
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 将回调地狱按在地上摩擦的Promise
  • 爬虫模拟登陆 SegmentFault
  • 前端代码风格自动化系列(二)之Commitlint
  • 如何进阶一名有竞争力的程序员?
  • 如何学习JavaEE,项目又该如何做?
  • 数据可视化之 Sankey 桑基图的实现
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 应用生命周期终极 DevOps 工具包
  • 原生js练习题---第五课
  • 怎么把视频里的音乐提取出来
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • # 透过事物看本质的能力怎么培养?
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)UDP基本编程步骤
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .NET 表达式计算:Expression Evaluator
  • ;号自动换行
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • @WebService和@WebMethod注解的用法