Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件
一下代码是自己结合教材,并结合以往用到的实例编写的代码,可以做为参考
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from HTMLTestRunner import HTMLTestRunner
from email.header import Header
import unittest
import time,os #==============定义发送邮件 =============== def send_mail(file_new):
f = open(file_new,'rb')
#读取测试报告正文
mail_body = f.read()
f.close()
# 发送邮箱服务器
smtpserver = "smtp.163.com"
# 发件人邮箱
sender = 'qwe_test@163.com'
# 接收人邮箱
receiver = 'qwe@163.com'
# 发送邮箱用户信息
username = 'qwe@163.com'
# 客户端授权码
password = 'qweqw18' #通过 模块构造的带附件的邮件如图
msg = MIMEMultipart()
#编写html类型的邮件正文,MIMEtext()用于定义邮件正文
#发送正文
text = MIMEText(mail_body, 'html', 'utf-8')
text['Subject'] = Header('自动化测试报告', 'utf-8')
msg.attach(text)
#发送附件
#Header()用于定义邮件标题
msg['Subject'] = Header('自动化测试报告', 'utf-8')
msg_file = MIMEText(mail_body, 'html', 'utf-8')
msg_file['Content-Type'] = 'application/octet-stream'
msg_file["Content-Disposition"] = 'attachment; filename="TestReport.html"'
msg.attach(msg_file) # 如果只发正文的话,上面的代码 从password 下面到这段注释上面
# 全部替换为下面的两行代码即可,上面的代码是增加了发送附件的功能。
# text = MIMEText(mail_body, 'html', 'utf-8')
# text['Subject'] = Header('自动化测试报告', 'utf-8') #连接发送邮件
# smtp = smtplib.SMTP()
# smtp.connect(smtpserver)
# smtp.login(username, password)
# smtp.sendmail('qwet@163.com', 'qewq@163.com', msg.as_string())
# smtp.quit()
# print("email has send out !") #一样的逻辑,不一样的写法导致上面的发送失败,下面这种发送成功,所以要使用msg['from']这种写法
msg['from'] = 'qweqt@163.com' # 发送邮件的人
msg['to'] = 'q10@163.com'
# smtp = smtplib.SMTP('smtp.163.com', 25) # 连接服务器
smtp = smtplib.SMTP()
smtp.connect('smtp.163.com')
smtp.login(username, password) # 登录的用户名和密码
smtp.sendmail(msg['from'], msg['to'], msg.as_string()) # 发送邮件
smtp.quit()
print('sendmail success') #======================查找最新的测试报告========================== def new_report(testreport):
#方式1:
# lists = os.listdir(testreport)
# lists.sort(key = lambda fn: os.path.getmtime(testreport + '\\' + fn))
# file_new = os.path.join(testreport,lists[-1])
# print(file_new)
# return file_new #方式2:
dirs = os.listdir(testreport)
dirs.sort()
newreportname = dirs[-1]
print('The new report name: {0}'.format(newreportname))
file_new = os.path.join(testreport, newreportname)
return file_new if __name__ == '__main__':
test_dir = os.path.join(os.getcwd(),'test_case')
#test_report = "D:/SProgram/PySpace/wmq/SendHtmlMail/report"
test_report = os.path.join(os.getcwd(), 'report')
discover = unittest.defaultTestLoader.discover(test_dir,pattern='test*.py') now = time.strftime("%Y-%m-%d-%H_%M_%S")
filename = test_report+'/result_'+now+'.html'
fp = open(filename,'wb')
runner = HTMLTestRunner(stream=fp,title="测试报告",description='用例执行情况:')
runner.run(discover)
fp.close() new_report = new_report(test_report)
send_mail(new_report)
Python + HTMLTestRunner + smtplib 完成测试报告生成及发送测试报告邮件的更多相关文章
- web端自动化——selenium测试报告生成、找到测试报告路径、实现发邮件(整合)
有这样的一个场景: 假设生成的测试报告与多人相关,每个人都去测试服务器査看就会比较麻烦,如果把这种主动的且不及时的査看变成被动且及时的査收,就方便多了. 整个程序的执行过程可以分为三个步骤: ① ...
- 基于python语言的自动化测试中生成html的测试报告时HtmlTestRunner模块常见问题
一.导入了HTMLTestRunner模块,报错:No module named StringIO,在python3.x中确实没有,在第94行引入的名称改成import io,539行要改成self. ...
- python3修改HTMLTestRunner,生成有截图的测试报告,并发送测试邮件(二)
3. 如何将第一步得到的地址和名称 输入 进第二步里的表格中呢... 用上述查找元素的方法,发现HTMLTestRunner.py中REPORT_TEST_WITH_OUTPUT_TMPL是用来输出测 ...
- Python单元测试框架unittest之生成测试报告(HTMLTestRunner)
前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...
- Python+unittest发送测试报告
案例:将E:\Python_script\unittest\Test_Baidu生成的最新测试报告发送到指定邮箱. 我们将之前的unittest的报告生成和Python自动发送邮件结合在一起,就可以完 ...
- Python+request+ smtplib 测试结果html报告邮件发送(下)《六》
目录结构如下: 1.cfg.ini的配置信息写法如下: [email] ;--------------------------使用腾讯企业邮箱作为发件人的操作如下------------------- ...
- 记录python接口自动化测试--利用unittest生成测试报告(第四目)
前面介绍了是用unittest管理测试用例,这次看看如何生成html格式的测试报告 生成html格式的测试报告需要用到 HTMLTestRunner,在网上下载了一个HTMLTestRunner.py ...
- python - HTMLTestRunner 测试报告模板设置
python - HTMLTestRunner 测试报告模板设置 优化模板下载地址: http://download.csdn.net/download/chinayyj2010/10039097 ...
- python运维开发常用模块(6)发送电子邮件模块smtplib
1.模块常用方法 SMTP类定义:smtplib.SMTP([host[,port[,local_hostname[, timeout]]]]),作为SMTP的构造函数,功能是与smtp服务器建立连接 ...
随机推荐
- ceph---luminous 块存储(RBD)搭建
1. 创建pool 创建存储池: ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] [crush-ruleset-n ...
- MongoDB + Spark: 完整的大数据解决方案
Spark介绍 按照官方的定义,Spark 是一个通用,快速,适用于大规模数据的处理引擎. 通用性:我们可以使用Spark SQL来执行常规分析, Spark Streaming 来流数据处理, 以及 ...
- LeetCode题解 #1 Two Sum
在LeetCode做的第一到题 题目大意:给出n个数,在其中找出和为一个特定数的两个数. Input: numbers={2, 7, 11, 15}, target=9Output: index1=1 ...
- krpano之小地图
效果: 点击地图按钮时,小地图移入,再次点击时移出. 地图上显示表示场景位置的坐标点,和可控制场景观看方向的雷达区. 插件: radar.js(plugins) radar.swf(plugins) ...
- 语义分析:C语言表达式的语法树生成——Python实现
令狐冲慢慢走近,那汉子全身发抖,双膝一屈,跪倒在雪地之中.令狐冲怒道:“你辱我师妹,须饶你不得.”长剑指在他咽喉之上,心念一动,走近一步,低声问道:“写在雪人上的,是些什么字?” 那汉子颤声道 ...
- PHP 连接打开新网页带参数
PHP 连接打开新网页带参数 detail.php?ID=<?PHP echo $row['ID'];?> aa.php?ID=123 取ID参数 $aid=$_GET['ID']; 网页 ...
- angular.module方法
关于module的定义为:angular.module(‘com.ngbook.demo’, []).关于module函数可以传递3个参数,它们分别为: name:模块定义的名称,它应该是一个唯一的必 ...
- 【转】tcp_tw_recycle和tcp_timestamps导致connect失败问题
(2012-02-01 18:40:32) 近来线上陆续出现了一些connect失败的问题,经过分析试验,最终确认和proc参数tcp_tw_recycle/tcp_timestamps相关: ...
- Nginx在Windows下的使用与配置
前往官网下载对应的windows版本 官网 下载后进入安装目录,启动命令行窗口,输入: nignx -c conf\nginx.conf 则nginx服务器已经启动. 打开浏览器,在标题栏输入: lo ...
- avalon最佳实践
最近从angular的QQ群与新浪微博拉了许多人来用我的avalon,成为第一批登上方舟,脱离DOM苦海的人.短短三个月内,5群的朋友也搞出几个切实实行的案例了.为应对粉丝们高益高涨的热情,遂放出此文 ...