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 相关文章推荐
python进阶教程之词典、字典、dict
Aug 29 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
Jun 16 Python
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
详谈python read readline readlines的区别
Sep 22 Python
简单了解Python中的几种函数
Nov 03 Python
Python随机函数库random的使用方法详解
Aug 21 Python
Python属性和内建属性实例解析
Jan 14 Python
Django models文件模型变更错误解决
May 11 Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 Python
关于Python错误重试方法总结
Jan 03 Python
Django中的JWT身份验证的实现
May 07 Python
python实现股票历史数据可视化分析案例
Jun 10 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引用地址改变变量值的问题
2012/03/23 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
PHP实现随机生成水印图片功能
2017/03/22 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
原生js实现随机点名
2020/07/05 Javascript
Python写的英文字符大小写转换代码示例
2015/03/06 Python
python实现同时给多个变量赋值的方法
2015/04/30 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
使用python绘制温度变化雷达图
2019/10/18 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
python爬取youtube视频的示例代码
2021/03/03 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
瀑布模型都有哪些优缺点
2014/06/23 面试题
采购意向书范本
2014/03/31 职场文书
村居抓节水倡议书
2014/05/19 职场文书
新农村建设标语
2014/06/24 职场文书
转让协议书范本
2014/09/13 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
Python类方法总结讲解
2021/07/26 Python
Python sklearn分类决策树方法详解
2022/09/23 Python