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 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
[原创]使用豆瓣提供的国内pypi源
Jul 02 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
Python内置函数——__import__ 的使用方法
Nov 24 Python
Python产生一个数值范围内的不重复的随机数的实现方法
Aug 21 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
Python 发送邮件方法总结
Aug 10 Python
python list的index()和find()的实现
Nov 16 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 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
非常好用的Zend Framework分页类
2014/06/25 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
删除重复数据的算法
2006/11/23 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
浅析javascript的return语句
2015/12/15 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
小程序和web画三角形实现解析
2019/09/02 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
html5实现滑块功能之type=&quot;range&quot;属性
2020/02/18 HTML / CSS
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
医院总经理岗位职责
2014/02/04 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
九年级英语教学反思
2016/02/15 职场文书
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android
基于Python实现对比Exce的工具
2022/04/07 Python