前言

实现需求:当测试用例全部通过的时候,不发邮件,当用例出现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-用例不通过的时候发送邮件的更多相关文章

  1. selenium+python自动化98--文件下载弹窗处理(PyKeyboard)

    前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...

  2. selenium+python自动化79-文件下载(SendKeys)

    前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...

  3. selenium+python自动化登录脚本

    利用selenium+python写的一个关于登录的自动化脚本

  4. 【python-excel】Selenium+python自动化之读取Excel数据(xlrd)

    Selenium2+python自动化之读取Excel数据(xlrd) 转载地址:http://www.cnblogs.com/lingzeng86/p/6793398.html ·········· ...

  5. selenium+python自动化102-登录页面滑动解锁(ActionChains)

    前言 登录页面会遇到滑动解锁,滑动解锁的目的就是为了防止别人用代码登录(也就是为了防止你自动化登录),有些滑动解锁是需要去拼图这种会难一点. 有些直接拖到最最右侧就可以了,本篇讲下使用 seleniu ...

  6. selenium+python自动化90-unittest多线程执行用例

    前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线 ...

  7. selenium+python自动化unittest之跳过用例skip

    前言 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例 ...

  8. selenium+python自动化之元素定位

    自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. ...

  9. selenium+python自动化78-autoit参数化与批量上传

    前言 前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片. 这样每次调用的时候,在命令行里面加一个文件路径的参数就行. 一.命令行参数 ...

随机推荐

  1. 【OpenCV】Learn OpenCV

    learn opencv website: https://www.learnopencv.com/ learn opencv github:https://github.com/spmallick/ ...

  2. BZOJ3672: [Noi2014]购票【CDQ分治】【点分治】【斜率优化DP】

    Description 今年夏天,NOI在SZ市迎来了她30周岁的生日.来自全国 n 个城市的OIer们都会从各地出发,到SZ市参加这次盛会. 全国的城市构成了一棵以SZ市为根的有根树,每个城市与它的 ...

  3. RequireJs 与 SeaJs的相同之处与区别

    相同之处: RequireJS 和 Sea.js 都是模块加载器,倡导模块化开发理念,核心价值是让 JavaScript 的模块化开发变得简单自然. 不同之处: 定位有差异.RequireJS 想成为 ...

  4. elastic job简单用法

    public class JobMain { //配置注册中心 private ZookeeperConfiguration zkConfig = new ZookeeperConfiguration ...

  5. Ordering Tasks 拓扑排序

    John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...

  6. java内存的分配和管理

    常用的三个内存空间 栈内存 ,堆内存 ,方法区 栈内存存储的内容: 局部变量. 函数(栈中的局部变量,需要手动赋值.当变量,或者函数执行完毕,就自动被释放) 堆内存,存储的内容 :全局变量.数据容器. ...

  7. Mysql ON子句和USING子句

    Mysql ON子句和USING子句   Mysql 中联接SQL语句中,ON子句的语法格式为:table1.column_name = table2.column_name. 当模式设计对联接表的列 ...

  8. mac下hbase安装

    出处:https://www.jianshu.com/p/510e1d599123 安装到的路径:/usr/local/Cellar/hbase/1.2.6 linux操作: linux命令 作用 . ...

  9. spring cloud 知识点

    优秀的介绍资料: 资料 地址 spring cloud 中文网 https://springcloud.cc/ spring cloud 介绍 https://www.jianshu.com/p/74 ...

  10. spring考试