selenium+python自动化89-用例不通过的时候发送邮件
前言
实现需求:当测试用例全部通过的时候,不发邮件,当用例出现Error或Failure的时候发送邮件
解决思路:生成html测试报告后,用bs4解析html页面,写个函数判断页面上是都有不通过的记录
html报告
1.查看html报告,主要看Status这一行是否会出现Failure 或 Error 的记录

bs4解析html
1.bs4模块在我的博客上上海-悠悠之前有过介绍,就不重复写了,先定位html页面元素,先通过它的class属性:attribute定位到这三行记录

2.取出最后一行,然后读出文本内容。
# coding:utf-8
from bs4 import BeautifulSoup
# 打开html文件,读取报告内容
with open("result.html", "r") as fp:
f = fp.read() # 读报告
# 解析html,查找class属性attribute
soup = BeautifulSoup(f, "html.parser")
status = soup.find_all(class_="attribute")
# 打印查找内容
print(status)
print("qq交流群:226296743")
result = status[2].contents[-1] # 获取报告结果
print(result)
运行结果:
[<p class="attribute"><strong>Start Time:</strong> 2018-01-18 16:35:49</p>, <p class="attribute"><strong>Duration:</strong> 0:00:00</p>, <p class="attribute"><strong>Status:</strong> Pass 2 Failure 1 Error 1</p>]
qq交流群:226296743
Pass 2 Failure 1 Error 1

写个判断函数
1.对结果判断,写个判断是否有失败用例的函数
# coding:utf-8
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding('utf8')
def is_result_pass():
try:
with open("result.html", "r") as fp:
f = fp.read() # 读报告
soup = BeautifulSoup(f, "html.parser")
status = soup.find_all(class_="attribute")
result = status[2].contents[-1] # 获取报告结果
if "Failure" in result or "Error" in result:
print("测试过程有不通过用例:%s"%result)
return False
else:
return True
except Exception as msg:
print("判断过程出现异常:%s"%str(msg))
return False
if __name__ == "__main__":
print("qq交流群:226296743")
res = is_result_pass()
print(res)
运行结果:
测试过程有不通过用例: Pass 2 Failure 1 Error 1
False
2.在最后发邮件之前加个判断
if not is_result_pass():
# 判断html报告是否有报错
# 执行发送邮件函数,自己写一个发邮件函数
# send_mail(sender, psw, receiver, smtp_server, report_file)
else:
print("测试用例全部通过,不发送邮件")
selenium+python自动化89-用例不通过的时候发送邮件的更多相关文章
- selenium+python自动化98--文件下载弹窗处理(PyKeyboard)
前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...
- selenium+python自动化79-文件下载(SendKeys)
前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...
- 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 ...
- selenium+python自动化90-unittest多线程执行用例
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线 ...
- selenium+python自动化unittest之跳过用例skip
前言 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例 ...
- selenium+python自动化之元素定位
自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. ...
- selenium+python自动化78-autoit参数化与批量上传
前言 前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片. 这样每次调用的时候,在命令行里面加一个文件路径的参数就行. 一.命令行参数 ...
随机推荐
- 有道词典 安卓版 更新日志 - imsoft.cnblogs
手机词典 更新日志: 2014年4月23日 v5.0.4版本 · 新增“全球发音”功能,带来世界各国的英文口音,体验原汁原味的英语发音: · 新增“发现频道”,打造移动 ...
- python海龟绘图
最近学了python,看了几本书之后,才明白python的强大,python是一种解释型的语言,即每写一行程序就执行一行. 而且在科学计算方面,处理的能力特别的方便. 比如python中的字典dict ...
- ThinkPHP3.2.3整合smarty模板(三)
在smarty模板中使用thinkphp框架的U方法时要主要的问题: 1.不能直接使用{:U('Index/index')}: 2.正确的使用方法为:<!--{U("Login/log ...
- POJ 2585:Window Pains(拓扑排序)
Window Pains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2524 Accepted: 1284 Desc ...
- [题解] CodeM美团点评编程竞赛资格赛题
最近看到牛课网美团一个编程竞赛,想着做做看,结果一写就是两天..真是写不动了啊.话不多说,下面开始我的题解. 题目大致还是比较考察思维和代码能力(因为自己代码能力较弱,才会觉得比较考察代码能力吧= = ...
- HDU5373 The shortest problem (YY)
http://acm.hdu.edu.cn/showproblem.php?pid=5373 YY题,模拟下计算过程就好了,计算中并不要保存实际数(这个数会非常大),只要保存到目前为止的数字位上的和 ...
- ES中Module的使用
Module 1.ES6在语言标准的层面上,实现了模块功能,成为浏览器和服务器通用的模块解决方案,完全可以取代 CommonJS 和 AMD 规范,基本特点如下: 每一个模块只加载一次, 每一个JS只 ...
- Android USB gadget框架学习笔记
一 Gadget框架结构 kernel/drivers/usb/gadget,这个目录是android下usbgadget的主要目录. Gadget功能组织单元:主要文件android.c,usb g ...
- leetcode:Minimum Depth of Binary Tree【Python版】
1.类中递归调用添加self: 2.root为None,返回0 3.root不为None,root左右孩子为None,返回1 4.返回l和r最小深度,l和r初始为极大值: # Definition f ...
- 来自官方的一些dbt 最佳实践
限制对原始数据的依赖性 您的项目将取决于存储在数据库中的原始数据.我们建议制作所谓的“基本模型”,以最大限度地减少对原始数据表的依赖性.在此约定中,基本模型可以具有以下职责: 仅选择与当前分析相关的字 ...