首页 > 其他分享 >unittest发送邮件功能

unittest发送邮件功能

时间:2023-11-07 13:49:21浏览次数:28  
标签:case unittest smtp 发送 report test new 邮件 msg

# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.导入unittest模块
import HTMLTestRunnerCN
import unittest
import os
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import smtplib


# 4.编写测试用例和断言
def all_case():
# 待执行用例的目录
# case_dir = "用例路径"
case_dir = os.path.join(os.getcwd(), "test_case")
testcase = unittest.TestSuite()
discover = unittest.defaultTestLoader.discover(case_dir,
pattern="test_paidui.py",
top_level_dir=None)
# #discover方法筛选出用例,循环添加到测试套件中
# for test_suit in discover:
# for test_case in test_suit:
# #添加用力到testcase
# testcase.addTests(test_case)
# print(testcase)
testcase.addTests(discover) # 直接加载 discover 可以兼容python2和3
print(testcase)
return testcase


# ==============定义发送邮件==========
def send_mail(file_new):
# -----------1.跟发件相关的参数------
smtpserver = 'smtp.mxhichina.com' # 发件服务器
port = 0 # 端口
username = '[email protected]' # 发件箱用户名
password = 'ceXXx@@123' # 发件箱密码
sender = '[email protected]' # 发件人邮箱
receiver = ['[email protected]', '[email protected]'] # 收件人邮箱
# ----------2.编辑邮件的内容------
# 读文件
f = open(file_new, 'rb')
mail_body = f.read()
f.close()
# 邮件正文是MIMEText
body = MIMEText(str(mail_body), 'html', 'utf-8')
# 邮件对象
msg = MIMEMultipart()
msg['Subject'] = Header("自动化测试报告", 'utf-8').encode() # 主题
msg['From'] = Header(u'测试机 <%s>' % sender) # 发件人
msg['To'] = Header(u'测试负责人 <%s>' % receiver) # 收件人
msg['To'] = ';'.join(receiver)
msg['date'] = time.strftime("%a,%d %b %Y %H:%M:%S %z")
msg.attach(body)
# 附件
att = MIMEText(str(mail_body), "base64", "utf-8")
att["Content-Type"] = "application/octet-stream"
att["Content-Disposition"] = 'attachment; filename="test_report.html"'
msg.attach(att)
# ----------3.发送邮件------
try:
smtp = smtplib.SMTP()
smtp.connect(smtpserver) # 连服务器
smtp.login(sender, password)
except:
smtp = smtplib.SMTP_SSL(smtpserver, port)
smtp.login(sender, password) # 登录
smtp.sendmail(sender, receiver, msg.as_string()) # 发送
smtp.quit()
# #发送邮件
# smtp = smtplib.SMTP()
# smtp.connect('smtp.mxhichina.com') # 邮箱服务器
# smtp.login(username, password) # 登录邮箱
# smtp.sendmail(sender, receiver, msg.as_string()) # 发送者和接收者
# smtp.quit()
print("邮件已发出!注意查收。")


# ======查找测试目录,找到最新生成的测试报告文件======
def new_report(test_report):
lists = os.listdir(test_report) # 列出目录的下所有文件和文件夹保存到lists
lists.sort(key=lambda fn: os.path.getmtime(test_report + "\\" + fn)) # 按时间排序
file_new = os.path.join(test_report, lists[-1]) # 获取最新的文件保存到file_new
print(file_new)
return file_new


if __name__ == "__main__":
# 返回实例
runner = unittest.TextTestRunner()
# 导入第三方模块HTMLTestRunner
import HTMLTestRunnerCN
import time

# 获取当前时间,这样便于下面的使用。
now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
# 保存生成报告的路径
report_path = "D:\\PycharmProjects\\xjxm\\auto_zy\\test_report\\" + now + "_result.html"
fp = open(report_path, 'wb')
runner_test = HTMLTestRunnerCN.HTMLTestRunner(stream=fp,
title=u"自动化测试用例",
description=u"用例执行情况",
verbosity=2
)
# run 所有用例
runner_test.run(all_case())
# 关闭文件,记住用open()打开文件后一定要记得关闭它,否则会占用系统的可打开文件句柄数。
fp.close()
# 测试报告文件夹
test_path = "D:\\PycharmProjects\\xjxm\\auto_zy\\test_report\\"
new_report = new_report(test_path)
# send_mail(new_report) # 发送测试报告

标签:case,unittest,smtp,发送,report,test,new,邮件,msg
From: https://www.cnblogs.com/fengqu/p/17814780.html

相关文章

  • Django实战项目-学习任务系统-发送短信通知
    接着上期代码内容,继续完善优化系统功能。本次增加发送短信通知功能,学习任务系统发布的任务,为了更加及时通知到学生用户,再原有发送邮件通知基础上,再加上手机短信通知功能。第一步:开通短信通知服务目前短信通知都是要收费的,本人还没发现免费的短信通知服务,如有网友知道免费资源请......
  • 七、设置请求头信息 jquery发送ajax请求和后端一起使用
    七、设置请求头信息jquery发送ajax请求和后端一起使用1、预定义请求头设置:在xhr.open()方法之后添加语句,进行请求头设置//设置请求头xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');请求报文分为:行、头、空行、体其中......
  • Unittest简介
    一、Unittest框架Unittest框架:框架=测试模块+测试管理模块+测试统计模块,python的内置模块importunittestUnittest框架四大组件:TestCaseTestSuiteTestRunnerTestLoader 二、TestCase测试用例unittest中TestCase部分的规则1、用例类必须继承Unittest.TestCase,并且以te......
  • '/webhook'​​​是你的服务器上的一个路径,当有人发送POST请求到这个路径时,​​webhoo
    在这段代码中,'/webhook'是你的服务器上的一个路径,当有人发送POST请求到这个路径时,webhook()函数就会被调用。你可以根据你的需求来选择这个路径,只要它在你的服务器上是唯一的。例如,如果你的服务器的URL是http://myserver.com,那么当飞书机器人发送POST请求到http://myserver.com/web......
  • 二十六、QT发送http请求并解析返回的json数据
    1.使用的模块和类模块:network类:QNetworkAccessManager、QNetworkRequest、QNetworkReply、QJsonDocument、QJsonObject、QJsonArrayQSslSocket::sslLibraryBuildVersionString();:查看当前使用的ssl版本,访问HTTPS时需要使用、复制libcrypto-1_1-x64.dll和libssl-1_1......
  • Ajax发送数据
    ajax发送json格式数据(contentType)"""前后端传输数据的时候一定要确保编码格式跟数据真正的格式是一致的不要骗人家!!!{"username":"jason","age":25} 在request.POST里面肯定找不到 django针对json格式的数据不会做任何的处理 request对象方法补充 request.is_a......
  • Django实战项目-学习任务系统-发送邮件通知
    接着上期代码内容,继续完善优化系统功能。 本次增加发送邮件通知功能,学习任务系统发布的任务,需要及时通知到学生用户知晓。由于目前智能手机普及,人人都离不开手机,所以手机端接收通知信息更加及时有效。 其中微信使用频率最多,本来想使用微信通知功能,但是经过网上搜集资料测试......
  • 定制unittest测试报告
    基于HTMLTestRunner的定制版本非常多,我这几天手动定制了一款,除了有不错的颜值,还提供了一些非常实用的功能。安装github:https://github.com/SeldomQA/HTMLTestRunner>gitclonehttps://github.com/SeldomQA/HTMLTestRunner>cdHTMLTestRunner/>pythonsetup.pyinstall基本使......
  • java笔记_14_邮箱发送
    JavaMailSender:默认使用配置文件中的发送人邮箱密码等JavaMailSenderImpl:方法中使用Impl对象,可手动设置发送账户密码application.ymlspring:#spring集成配置(省略创建session过程)mail:host:#邮件服务器地址port:#邮件服务器端口proto......
  • javamail发送附件DataSource使用文件流解决方案
    问题:在使用james邮件服务器发送邮件时,附件是存储在华为云服务器上的,只能通过ApacheHttpClient去下载,存储在FTP上的文件同样会碰到这个问题。API上邮件添加附件的方法:/*************1.本地文件*************///将本地文件作为附件DataSourcedataSource=newFileDataSourc......