【Selenium + Python】自动化测试之发送邮件正文以及附件同时发送
废话不多说,直接上代码:
import unittest
import time
import os
import smtplib
from HTMLTestRunner import HTMLTestRunner
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from models import driver def new_report(report_dir):
'''
:param report_dir:报告路径
:return:返回最新的文件
'''
#获取路径下的文件
lists = os.listdir(report_dir)
#按照时间顺序排序
lists.sort(key=lambda fn: os.path.getmtime(report_dir + fn))
#获取最近时间的
new_report = os.path.join(report_dir,lists[-1])
return new_report def send_mail(new_report,new_report_fail,now):
'''
:param new_report:获取最新的文件
:param new_report_fail:获取最新的文件的路径
:param now:当前生成报告的时间
:return:
''' senduser = 'xxx@126.com'
sendpswd = 'xxx'
receuser = 'xxx@xxx.com.cn' #获取报告文件:'related'43行
f = open(new_report,'rb')
body_main = f.read() msg = MIMEMultipart()
# 邮件标题
msg['Subject'] = Header('TCS系统自动化测试报告','utf-8')
msg['From'] = senduser
msg['To'] = receuser
#邮件内容
text = MIMEText(body_main,'html','utf-8')
msg.attach(text) #发送附件
att = MIMEApplication(open(new_report_fail, 'rb').read())
# att = MIMEText(sendfile, 'base64', 'utf-8')
att['Content-Type'] = 'application/octet-stream'
att.add_header('Content-Disposition', 'attachment', filename=('utf-8', '',now + "_report.html"))
msg.attach(att) smtp = smtplib.SMTP()
smtp.connect('smtp.126.com')
smtp.login(senduser,sendpswd)
smtp.sendmail(senduser,receuser,msg.as_string()) if __name__ == '__main__':
startime = time.strftime('%H:%M:%S')
print("开始时间为:%s" % startime)
#测试路径
test_dir = './tcs/test_case'
#报告路径
report_dir = './tcs/report/' now = time.strftime('%Y-%m-%d_%H-%M-%S')
# 创建完整报告文件
new_report_fail = report_dir + now + '_result.html'
fp = open(new_report_fail,'wb') runner = HTMLTestRunner(stream=fp,
title="大标题:测试报告",
description='执行测试用例如下:')
# 查找测试文件
discover = unittest.defaultTestLoader.discover(test_dir,pattern='*_sta.py') runner.run(discover)
fp.close() #②搜索最新生成的文件
new_report = new_report(report_dir)
#③发送邮件
send_mail(new_report,new_report_fail,now) #展示测试报告html
driver = driver.browser()
driver.get("F:/PyProject/project/tcs/report/"+ now +"_result.html") stoptime = time.strftime('%H:%M:%S')
print("结束时间为:%s" %stoptime)
【Selenium + Python】自动化测试之发送邮件正文以及附件同时发送的更多相关文章
- selenium+python自动化98--文件下载弹窗处理(PyKeyboard)
前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...
- selenium+python自动化79-文件下载(SendKeys)
前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...
- python自动化测试之连接几组测试包实例
python自动化测试之连接几组测试包实例 本文实例讲述了python自动化测试之连接几组测试包的方法,分享给大家供大家参考.具体方法如下: 具体代码如下: class RomanNumera ...
- python自动化---各类发送邮件方法及其可能的错误
一.发送文本邮件 可能的问题1.:需要注意,目前QQ邮箱来讲,不能收到完整的邮件,即有些内容不能显示,最好全部使用网易邮箱: 可能的问题2.:在以往的文本邮件发送中,只写了 msg = MIMETex ...
- python+selenium简易自动化框架,包含生成测试报告以及发送结果至Email
Selenium+python环境搭建见虫师的pdf文档,非常详尽 简易框架: 1.文件目录:
- selenium+python自动化登录脚本
利用selenium+python写的一个关于登录的自动化脚本
- 【python-excel】Selenium+python自动化之读取Excel数据(xlrd)
Selenium2+python自动化之读取Excel数据(xlrd) 转载地址:http://www.cnblogs.com/lingzeng86/p/6793398.html ·········· ...
- selenium+python自动化102-登录页面滑动解锁(ActionChains)
前言 登录页面会遇到滑动解锁,滑动解锁的目的就是为了防止别人用代码登录(也就是为了防止你自动化登录),有些滑动解锁是需要去拼图这种会难一点. 有些直接拖到最最右侧就可以了,本篇讲下使用 seleniu ...
- 邮件正文及其附件的发送的C++实现
这段代码我花了整整一天来编写,假设转载,请注明出处,谢谢! 前面的一篇文章已经讲了怎样发送邮件正文,原理我就不再叙述了.要了解的同学请到这里查看! http://blog.csdn.ne ...
随机推荐
- POJ 3057 Evacuation(二分图匹配+BFS)
[题目链接] http://poj.org/problem?id=3057 [题目大意] 给出一个迷宫,D表示门,.表示人,X表示不可通行, 每个门每时间单位只允许一个人通过, 每个人移动一格的为一时 ...
- [COCI2015]JABUKE
题目大意: 一个$n\times m(n,m\leq500)$的网格图中有若干个标记点,有$q(q\leq10^5)$个操作,每次新加入一个标记点,并询问和新加入点最近的点的距离. 思路: 记录对于每 ...
- NSOperationQueue 和 NSOperation
The NSOperationQueue class regulates the execution of a set of NSOperation objects. After being adde ...
- win2008 安装 配置 mysql
安装的是windows Server 2008 R2 操作系统 按照国际管理,安装了数据库 MYSQL 5.0. 一路顺利,可以通过外部连接MYSQL的时候出现了问题,无论如何也连接不上 发 ...
- 为什么我不使用Kubernetes的Ingress
为什么我不使用Kubernetes的Ingress 很不幸,据我所知Kubernetes的文档不是很完美,这就是为什么有很多同学在使用它的时候会遇到很多的坑,Ingress这个组件就是这些坑中的一个. ...
- tensorflow cnn+rnn基本结构
#CNN x = tf.placeholder(tf.float32,[None,input_node],name="x_input") y_ = tf.placeholder(t ...
- NetBean 远程开发的好文1 --> NetBeans的远程Linux C开发实践
from: http://blog.csdn.net/jacktan/article/details/9268535 一直以来总觉得NetBeans生活在Eclipse的阴影下,同样做为一款不错的基 ...
- [Tools] Deploy a Monorepo to Now V2
Now by Zeit has recently been updated and now supports multi-language monorepos. In this lesson we'l ...
- [Angular] Angular ngSwitch Core Directive In Detail
When want to display different component based on some conditions: <div class='course-category' [ ...
- 有关CGRectGetMinX,CGRectGetMidX,CGRectGetMaxX图解
CGRect size = CGRectMake(20, 20, 400, 400); //矩形中最小x值 ,size.x CGRectGetMinX(size) = 20; //矩形中最小y值 ,s ...