已附件的形式发送测试报告
Posted bigbigtong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已附件的形式发送测试报告相关的知识,希望对你有一定的参考价值。
上一篇中提到了已邮件形式发送报告,但是发送的报告不能查看具体的内容,如果想看到具体的内容,需要已附件的形式发送报告
测试用例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)
这样就以附件的形式发送了测试报告,便于查看具体的测试内容
以上是关于已附件的形式发送测试报告的主要内容,如果未能解决你的问题,请参考以下文章