Python发送邮件测试报告操作实例详解


Posted in Python onDecember 08, 2018

本文实例讲述了Python发送邮件测试报告操作。分享给大家供大家参考,具体如下:

发邮件需要用到python两个模块,smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email模块主要负责构造邮件。其中MIMEText()定义邮件正文,Header()定义邮件标题。MIMEMulipart模块构造带附件

发送HTML格式的邮件:

send_email_html.py

import smtplib
from email.mime.text import MIMEText    #MIMEText()定义邮件正文
from email.header import Header      #Header()定义邮件标题
#发送邮箱服务器
smtpserver = 'smtp.sina.com'
#发送邮箱用户/密码(登录邮箱操作)
user = "username@sina.com"
password = "password"
#发送邮箱
sender = "username@sina.com"
#接收邮箱
receiver = "8888@qq.com"
#发送主题
subject = 'email by python'
#编写HTML类型的邮件正文(把HTML代码写进入)
msg = MIMEText('<html><body><a href="">百度一下</a></p></body></html>','html','utf-8')
msg['Subject'] = Header(subject,'utf-8')
#连接发送邮件(smtplib模块基本使用格式)
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()

说明:

smtplib.SMTP():实例化SMTP()
connect(host,port):
host:指定连接的邮箱服务器。
port:指定连接服务器的端口号,默认为25.
login(user,password):user:登录邮箱的用户名。password:登录邮箱的密码。
sendmail(from_addr,to_addrs,msg,...)
from_addr:邮件发送者地址
to_addrs:邮件接收者地址。字符串列表['接收地址1','接收地址2','接收地址3',...]或'接收地址'
msg:发送消息:邮件内容。一般是msg.as_string()as_string()是将msg(MIMEText对象或者MIMEMultipart对象)变为str。
quit():用于结束SMTP会话。

Python发送邮件测试报告操作实例详解

发送带附件的邮件

send_email_file.py

import smtplib
from email.mime.text import MIMEText      #MIMRText()定义邮件正文
from email.mime.multipart import MIMEMultipart #MIMEMulipart模块构造带附件
#发送邮件的服务器
smtpserver = 'smtp.sina.com'
#发送邮件用户和密码
user ="xxx@sina.com"
password = "xxx"
#发送者
sender = "xxx@sina.com"
#接收者
receiver = "1xxx@qq.com"
#邮件主题
subject = "附件的邮件"
#发送附件
sendfile = open("C:\\Users\\Administrator\\Desktop\\html5.txt","r").read()
att = MIMEText(sendfile,"base64","utf-8")
att["Content-Type"] = "application/octet-stream"
att["Content-Disposition"] = "attachment;filename = 'html5.txt'"
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = subject
msgRoot.attach(att)
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receiver,msgRoot.as_string())
smtp.quit()

Python发送邮件测试报告操作实例详解

查找最新的测试报告

find_file.py

import os
#定义文件目录
result_dir = "E:\\自动化测试项目\\子项目_bbs\\report"
lists = os.listdir(result_dir) #获取该目录下的所有文件、文件夹,保存为列表
#对目录下的文件按创建的时间进行排序
lists.sort(key=lambda fn: os.path.getmtime(result_dir + "\\" + fn))
#lists[-1]取到的是最新生成的文件或文件夹
print(('最新的文件是:' + lists[-1]))
file = os.path.join(result_dir,lists[-1])
print(file)

Python发送邮件测试报告操作实例详解

整合自动化测试发送测试报告邮件

from HTMLTestRunner import HTMLTestRunner
from email.mime.text import MIMEText
from email.header import Header
import smtplib
import unittest
import time
import os
#==============定义发送邮件==========
def send_mail(file_new):
  f = open(file_new,'rb')
  mail_body = f.read()
  f.close()
  msg = MIMEText(mail_body,'html','utf-8')
  msg['Subject'] = Header("自动化测试报告",'utf-8')
  smtp = smtplib.SMTP()
  smtp.connect('smtp.sina.com')                   #邮箱服务器
  smtp.login("sender@sina.com","password")              #登录邮箱
  smtp.sendmail("sender@sina.com","receiver@qq.com",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__":
  test_dir = "测试用例存放目录"
  test_report = "测试报告存放目录"
  discover = unittest.defaultTestLoader.discover(test_dir,
                          pattern = 'test_*.py')
  now = time.strftime("%Y-%m-%d_%H-%M-%S")
  filename = test_report + '\\' + now + 'result.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)   #发送测试报告

1.通过unittest框架的discover()找到匹配的测试用例,由HTMLTestRunner的run()方法执行测试用例并生成最新的测试报告。

2.调用new_report()函数找到测试报告目录下最新生成的测试报告,返回测试报告的路径。

3.将得到的最新测试报告的完整路径传给send_mail()函数,实现发邮件功能。

Python发送邮件测试报告操作实例详解

参考:python自动发送邮件总结

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Eclipse + Python 的安装与配置流程
Mar 05 Python
wxPython学习之主框架实例
Sep 28 Python
Python调用C语言开发的共享库方法实例
Mar 18 Python
Python中isnumeric()方法的使用简介
May 19 Python
python中管道用法入门实例
Jun 04 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
python简单商城购物车实例代码
Mar 15 Python
python pandas中DataFrame类型数据操作函数的方法
Apr 08 Python
15行Python代码实现免费发送手机短信推送消息功能
Feb 27 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
python openssl模块安装及用法
Dec 06 Python
Python字典和列表性能之间的比较
Jun 07 Python
Python自动发送邮件的方法实例总结
Dec 08 #Python
Python数据集切分实例
Dec 08 #Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 #Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 #Python
pandas求两个表格不相交的集合方法
Dec 08 #Python
对pytorch网络层结构的数组化详解
Dec 08 #Python
pytorch对可变长度序列的处理方法详解
Dec 08 #Python
You might like
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
js 获取Listbox选择的值的代码
2010/04/15 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
谈谈JavaScript自定义回调函数
2015/10/18 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
python如何删除文件、目录
2020/06/23 Python
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
shell变量的作用空间是什么
2013/08/17 面试题
成绩单公证书
2014/04/10 职场文书
单位接收函格式
2015/01/30 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript