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 ...
随机推荐
- StepShot4.3.0安装包_KeyGen发布
StepShot是一个可以方便快速的制作操作手册的软件,功能相当强悍. 请低调使用. -------------------------------华丽的分割线-------------------- ...
- WPF 验证错误模板
<Window x:Class="BindingExam.MainWindow" xmlns="http://schemas.microsoft.co ...
- AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享
原文:AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享 ====================www.ayjs.net 杨洋 wpfui.com ...
- DevExpress XtraTreeList TreeList复选框选择
权限管理涉及复选框多勾选. 1.控件属性设置 TreeList.OperationView.ShowCheckBoxes=true;用于显示CheckBox: TreeList.OperationBe ...
- VS生成Cordova for Android应用之Gradle
原文:VS生成Cordova for Android应用之Gradle 一.Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具.它使用一种基 ...
- Win8 Metro(C#)数字图像处理--2.66FloodFill算法
原文:Win8 Metro(C#)数字图像处理--2.66FloodFill算法 [函数名称] 洪水填充算法函数 WriteableBitmap FloodfillProcess(Write ...
- Windows实用小工具-问题步骤记录器
今晚给大家介绍个实用的好工具,可以做简单的问题记录,再也不用截图加注释这么辛苦了····· 经测试,这东东在win7,2008 及2008R2里适用,也就是说,在win7以上的系统中才有.好了,下面直 ...
- mingw(gcc)默认使用的是dwarf格式
无意中发现的: C:\Users\my>gcc -vUsing built-in specs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=C:/Qt/Qt5.6.2/T ...
- 快速开发平台 WebBuilder 8.4 发布
WebBuilder是一款强大,全面和高效的应用开发和运行平台.基于浏览器的集成开发环境,可视化和智能化的设计,能轻松完成常规应用和面向手机的移动应用开发.高效.稳定和可扩展的特点,适合复杂企业级应用 ...
- spring通过注解方式依赖注入原理 (私有成员属性如何注入)
一.spring如何创建依赖的对象 用过spring的都知道我们在dao.service层加上@repository.@Service就能将这两个对象交给spring管理,在下次使用的时候使用@res ...