(二十二)异常捕获与用例断言失败截图
Posted wx921308494
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(二十二)异常捕获与用例断言失败截图相关的知识,希望对你有一定的参考价值。
1.认识异常
2.捕获异常
3.断言
4.用例失败截图
=====================================================
(一)
什么是异常?
exception:程序一旦遇到错误后,就会引发异常,如果异常没有被处理或者被捕捉,程序就会回溯来终止运行
异常的分类
常见的异常有哪些?
BaseException:所有异常类的基类
Exception:所有异常类的基类,继承于BaseException
AssertionError:assert语句失败
FileNotFoundError:文件没找到
NameError:变量没有赋值
TypeError:类型错误
===================================================
(二)
如何捕获异常?
我们通常可以通过异常处理机制的捕捉这些可预见性的一些问题,比如:元素没有找到,文件没有找到等等,就像我们知道洗冷水澡会感冒一样提前备好感冒药
通常我们是用try...except捕获,如果已知异常类型就需要在except后面加上异常类型
异常捕获代码示例:
元素没有找到异常
如何处理?
异常处理后显示结果
==========================================================================(三)什么是断言?
断言可用来判断测试用例的成功与否,可以与预期结果相对比
在功能测试中通常是人工肉眼来判别
测试的思想是相通的,比如性能测试中jmeter用到的也是响应断言,loadrunner用到的是检查点函数
断言的分类?
Title:页面标题
Value:元素的值
Text:元素的文本(最常用的)
Table:元素的标签
ElementPresent:获得当前元素
常见断言使用方法?
assertEqual(a,b):a等于b
assertNotEqual(a,b):a不等于b
assertIn(a,b):a在b中
assertNotIn(a,b):a不在b中
断言代码和样式讲解:
#断言
def checkSearch(self):
self.dv.find_element_by_xpath(‘/html/body/div[1]/div[5]/div[1]/div[2]/div/div[2]/span‘).text
之前我们学到了PO的设计模式
在page页面类,我们写好根据文本的断言()
def test1(self):
try:
self.obj.setKeys_operator(‘ ‘)
self.assertIn(u‘百度为您找到相关结果‘,self.obj.checkSearch())
except:
self.obj.insert_img(u‘输入空格报错.png‘)
在case部分,我们的用例可以根据断言结果来看用例是否成功
=====================================================================
(四)如何截图?
webdriver中本身自带截图功能
函数get_screenshot_as_file()
截图的好处?
自动化脚本是由程序去执行的,有时候报错我们并不能直观的看到用例是如何错误了,有了当前窗口的截图,就可以通过图片直观的看到出错的原因
代码示例和样式讲解:
##截图函数
def insert_img(self,file_name):
now = time.strftime("%Y-%m-%d %H-%M-%S")
file_path = r‘Z:autoscript ryscripterrorScreenShot‘ + ‘/‘ + now + file_name
self.dv.get_screenshot_as_file(file_path)
PO的设计模式下,我们的截图函数通常写在BasePage下
①加入时间戳
②保存截图文件的位置
#用例
def test1(self):
try:
self.obj.setKeys_operator(‘ ‘)
self.assertIn(u‘百度为您找到相关结果‘,self.obj.checkSearch())
except:
self.obj.insert_img(u‘输入空格报错.png‘)
try...except断言,如果断言异常或者失败,就会执行我们的截图函数,需要输入截图的名称,后缀以图片的格式保存
以上是关于(二十二)异常捕获与用例断言失败截图的主要内容,如果未能解决你的问题,请参考以下文章
Selenium2+python自动化60-异常后截图(screenshot)