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的Tornado框架实现一个一对一聊天的程序
Apr 25 Python
Python访问纯真IP数据库脚本分享
Jun 29 Python
在Django的视图中使用数据库查询的方法
Jul 16 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
Jan 20 Python
PyQT实现多窗口切换
Apr 20 Python
linux下python使用sendmail发送邮件
May 22 Python
Python3.5装饰器典型案例分析
Apr 30 Python
让Python脚本暂停执行的几种方法(小结)
Jul 11 Python
Python获取时间范围内日期列表和周列表的函数
Aug 05 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
jupyter notebook清除输出方式
Apr 10 Python
python pyecharts 实现一个文件绘制多张图
May 13 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&amp;MYSQL服务器配置说明
2006/10/09 PHP
php PDO中文乱码解决办法
2009/07/20 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
深入PHP变量存储的详解
2013/06/13 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
JQuery设置时间段下拉选择实例
2014/12/30 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
基于js中的原型、继承的一些想法
2016/08/10 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
vue实现循环切换动画
2018/10/17 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
python判断字符串是否纯数字的方法
2014/11/19 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
在Python中使用Neo4j的方法
2019/03/14 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
python Pexpect模块的使用
2020/12/25 Python
HTML5学习笔记之History API
2015/02/26 HTML / CSS
十八届三中全会学习方案
2014/02/16 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL