Requests方法 -- 项目实现自动发送邮件
"""
1.discover方法里面有三个参数:
-case_dir:这个是待执行用例的目录。
-pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本。
-top_level_dir:这个是顶层目录的名称,一般默认等于None就行了。
2.discover加载到的用例是一个list集合,需要重新写入到一个list对象testcase里;
这样就可以用unittest里面的TextTestRunner这里类的run方法去执行。
""" import unittest
import os,time
import HTMLTestRunner
from tomorrow import threads
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart #unittest_test目录,下有case和report
cur_path = os.path.dirname(__file__) def all_case(casename="case",rule="test*.py"):
'''第一加载所有的测试用例'''
case_path = os.path.join(cur_path,casename) #用例路径拼接
#如果不存在case文件夹,自动创建
if not os.path.exists(case_path):os.mkdir(case_path)
discover = unittest.TestLoader().discover(
casename,
pattern=rule,
top_level_dir=None
)
return discover # def getNowtime():
# return time.strftime("%Y-%M-%D %H-%M-%S",time.localtime(time.time())) def report():
"""第二执行所有用例,并把结果写入HTML测试报告中"""
# now = time.strftime("%Y-%M-%D %H-%M-%S")
report_path = os.path.join(cur_path,"report") #report文件夹
if not os.path.exists(report_path):os.mkdir(report_path)
report_abspath = os.path.join(report_path,"result.html") # html报告文件路径
# file = os.path.join(os.path.dirname(__file__), "Report", "testReport.html")
# print("report_path:%s"%report_abspath)
with open(report_abspath, "wb") as fp:
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title=u'自动化测试报告,测试结果如下:',
description=u'用例执行情况:')
# 调用add_case函数返回值
runner.run(all_case())
return report_abspath def send_mail():
"""第三发送测试报告"""
# ----------1.跟发件相关的参数------ smtpserver = "smtp.163.com" # 发件服务器
# smtpserver = "smtp.qq.com"
port = 25 # 非SSL协议端口号
# sender = "XXXX" # 账号
sender = "自己163邮箱账号"
psw = "自己的邮箱密码"
# psw = "wmqtqbtnmyamhfjd" # 密码
receiver = "xxxxx@qq.com" # 单个接收人也可以是 list
# receiver = ["xxxxx@qq.com"] # 多个收件人 list 对象 # ----------2.编辑邮件的内容------
# 读文件
# file_path = "Result.html"
# with open(file_path, "rb") as fp:
# mail_body = fp.read()
with open(report(),"rb") as f:
mail_body = f.read()
msg = MIMEMultipart()
msg["from"] = sender # 发件人
msg["to"] = receiver # 收件人
# msg["to"] = ";".join(receiver) # 多个收件人 list 转 str
msg["subject"] = "我的主题报告-test" # 主题 # 正文
body = MIMEText(mail_body, "html", "utf-8")
msg.attach(body) # 附件
att = MIMEText(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, psw)
except:
smtp = smtplib.SMTP_SSL(smtpserver, port) # QQ 邮箱
smtp.login(sender, psw) # 登录
smtp.sendmail(sender, receiver, msg.as_string()) # 发送
smtp.quit() def main():
send_mail() if __name__ == '__main__':
# runner = unittest_1.TextTestRunner()
# runner.run(all_case())
main() # report_abspath = os.path.join(report_path, "result.html") # html报告文件路径
# fp = open(report_abspath, "wb")
# runner = HTMLTestRunner.HTMLTestRunner(
# stream=fp,
# title=u'自动化测试报告,测试结果如下:',
# description=u'用例执行情况:')
# # 调用add_case函数返回值
# runner.run(all_case())
# fp.close() 有图有真相
Requests方法 -- 项目实现自动发送邮件的更多相关文章
- vue中npm run dev运行项目不能自动打开浏览器! 以及 webstorm跑vue项目jshint一直提示错误问题的解决方法!
vue中npm run dev运行项目不能自动打开浏览器!以及 webstorm跑vue项目jshint一直提示错误问题的解决方法! 1.上个项目结束就很久没有使用vue了,最近打算用vue搭建自己的 ...
- PCB 自动发送邮件---加入表格实现方法
先看一下手动发送邮件内容加入表格操作(下图所示),直接复制Excel内容,再粘贴到邮件内容中,就是这么便捷,如果我们想自动发送邮件,也实现同样的效果如果实现呢,在这里介绍2种方法: 一.读取Excel ...
- Ubuntu系统下使用Jenkins进行项目的自动构建还是项目回滚方法
上面虽然实现了项目的自动部署,但是有时部署失败的时候我们需要回滚到指定版本的构建,这样才能更灵活的进行项目的构建部署.我们可以选择“参数化的构建过程”进行传递不同的参数来选择是进行新的构建还是回滚 如 ...
- Selenium实战(七)——自动发送邮件
SMPT(Simple Mail Transfer Protocol)简单邮件传输协议,是一组由源地址到目的地址传送邮件的规则,可以控制信件的中转方式.Python的smptlib模块提供了简单的AP ...
- Unittest单元测试框架——BeautifulReport测试报告和Yagmail自动发送邮件
一.前言 之前在做appium自动化的时候,已经提到过unittest框架的基本概念.用例执行,以及BeautifulReport测试报告的简单使用了(地址:https://www.cnblogs.c ...
- VBA控制outlook自动发送邮件(转)
使用Excel VBA实现Outlook自动发送邮件 | 在工作上我们都会遇到批量发送邮件的情况,面对重复而规律性的工作,可以使用Excel的VBA实现自动批量化发送邮件.大大减小工作时间,提升工作效 ...
- 用Ant实现Java项目的自动构建和部署
原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml 本文请勿转载! Ant是一个Apache基金会下的跨平台的构 ...
- Eclipse下新建Maven项目、自动打依赖jar包
当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个本地仓库,但可以配置访 ...
- Jenkins进阶之自动发送邮件的Default Content设置模板
分享一个简洁实用的Jenkins项目邮件管理系统的"Default Content"设置模板 配置如下: <h1><center><font colo ...
随机推荐
- SQLite 的版本问题
原文:SQLite 的版本问题 在SQLite官方网站上的下载包真可以看花眼.不同的.net版本,还有不同的平台,开发和发布时需要加以注意. 在网上搜了搜,早有人注意到了. 关于在.Net开发中使用S ...
- GetDateFormat和GetTimeFormat两个API
https://msdn.microsoft.com/en-us/library/windows/desktop/dd318086(v=vs.85).aspx
- 错误:“ResourceDictionary”根元素需要 x:Class 特性来支持 XAML 文件中的事件处理程序。请移除 MouseLeftButtonDown 事件的事件处理程序.
原文:错误:"ResourceDictionary"根元素需要 x:Class 特性来支持 XAML 文件中的事件处理程序.请移除 MouseLeftButtonDown 事件的事 ...
- qml实现对SSL的支持(使用msys2,同时支持32和64位)超详细 good
首先准备环境.两种方法,使用mingw64 或者VS 直接放上下载地址https://sourceforge.net/projects/msys2/我下载的是msys2-x86_64-20161025 ...
- Visual Studio 2017报表RDLC设计器与工具箱中Report Viewer问题
原文:VS2017入门 RDLC入门之01 本系列所有内容为网络收集转载,版权为原作者所有. VS2017初始安装后和VS2015一样,都没有ReportDesigner/ReportViewer R ...
- Android零基础入门第74节:Activity启动和关闭
上一期我们学习了Activity的创建和配置,当时留了一个悬念,如何才能在默认启动的Activity中打开其他新建的Activity呢?那么本期一起来学习如何启动和关闭Activity. 一.概述 经 ...
- File handling in Delphi Object Pascal(处理record类型)
With new users purchasing Delphi every single day, it’s not uncommon for me to meet users that are n ...
- T4随记
关于T4模板的信息我就不赘述了,百度一大堆 MSDN的介绍 https://msdn.microsoft.com/zh-cn/library/bb126478.aspx 下面是简单的一个示例,从类中获 ...
- 事务 ( 进程 ID 60) 与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品
Select * FROM [TableName] With(NoLock) .....
- maven项目或者SpringBoot项目启动时报错在本地仓库中找不到jar包的解决办法
经常遇到项目检出来后是导入开发工具eclipse中pom文件出错问题,项目启动时遇到了一些列的jar包找不到的问题,所以换个开发平台到IDEA以为会好些,结果同样的问题还是会出现的,为了找到具体的解决 ...