(二十二)异常捕获与用例断言失败截图

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\tryscript\errorScreenShot‘ + ‘/‘ + 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断言,如果断言异常或者失败,就会执行我们的截图函数,需要输入截图的名称,后缀以图片的格式保存

原文地址:https://www.cnblogs.com/wx921308494/p/11966747.html

时间: 2024-07-31 07:42:46

(二十二)异常捕获与用例断言失败截图的相关文章

二十、异常捕获及处理详解

代码中被[]包含的表示可选,|符号分开的表示可选其一. 需求背景 我们在写存储过程的时候,可能会出现下列一些情况: 插入的数据违反唯一约束,导致插入失败 插入或者更新数据超过字段最大长度,导致操作失败 update影响行数和期望结果不一致 遇到上面各种异常情况的时,可能需要我们能够捕获,然后可能需要回滚当前事务. 本文主要围绕异常处理这块做详细的介绍. 此时我们需要使用游标,通过游标的方式来遍历select查询的结果集,然后对每行数据进行处理. 本篇内容 异常分类详解 内部异常详解 外部异常详解

华为上机题汇总(二十二)

华为上机题汇总(二十二) 注:编译环境为Visual Studio 2012,答案仅供参考. 目录 华为上机题汇总二十二 目录 第一百零六题 第一百零七题 第一百零八题 第一百零九题 第一百一十题 第一百一十一题 第一百零六题 106.去饭店吃饭 一个男人3元 一个女人2元 一个小孩1元 现输入总人数和总花费 #include <iostream> #include <vector> using namespace std; void display(const vector<

【管理心得之二十二】小人物 仰视 大授权

场景再现====================Boss:小王,来我办公室一下.小王: 嗯Boss:近期总公司有会,需要到外地出差几日.我不在的这段期间里,公司大小事务你帮忙处理一下.          如果有什么难决定的事,第一时间电话.邮件联系我商定即可.小王:  明白.放心吧领导,绝不会让你失望的Boss:嗯,那就好,没事了. {小王走出办公室} 心中暗喜,"难道这就是传说中的授权,Boss不在的时候,我岂不是最高权力的行使者." ==================== 从场景

QT开发(二十二)——QMainWindow主窗口

QT开发(二十二)--QMainWindow主窗口 一.主窗口简介 应用程序中的主窗口是与用户进行长时间交互的顶层窗口,提供了应用程序的大部分功能,通常是应用程序启动后的第一个窗口,应用程序一般由一个主窗口和多个对话框组成. QT中直接支持主窗口,QMainWindow是QT中主窗口的基类,是继承于QWidget类的容器型组件. QMainWindow内部封装了菜单栏.工具栏.中心组件.停靠组件.状态栏等. QMainWindow内置了布局管理器,基本的组件布局如下: 二.菜单栏 QT中提供了预

《Programming in Lua 3》读书笔记(二十二)

日期:2014.8.6 PartⅣ The C API 26 Extending Your Application 使用Lua很重要的一点是用来做配置语言.配合主语言做一些功能的配置. 26.1 The Basics 有的时候程序需要配置一些功能信息,很多时候可能有许多别的方法比用lua做配置要更简单:如使用环境变量或者读取文件,读取文件涉及到文件的解析.如果使用Lua进行配置的话,相当于用lua文件替代了要读取的如csv.txt文件等. 使用Lua进行配置的时候,就需要使用Lua API去控制

企业搜索引擎开发之连接器connector(二十二)

下面来分析线程执行类,线程池ThreadPool类 对该类的理解需要对java的线程池比较熟悉 该类引用了一个内部类 /** * The lazily constructed LazyThreadPool instance. */ private LazyThreadPool lazyThreadPool; 该成员实现了单例模式,即该对象只有一个实例,属于懒汉式单例模式,当实例化该成员时,启用了线程同步机制 /** * Shut down the {@link ThreadPool}. Afte

JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中,也是能看到他的,所以还是非常值得去学习的一个知识点的,我们直接开车了 一.Map概述 泛型< k,v> 键值对,映射关系 基本特点 该集合存储键值对,是一对一对往里存,而且要保证键的唯一性 1.添加 put(key ,values) putAll() 2.删除 clear() remove(ob

每日算法之二十二:Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may not modify the values in the list, on

攻城狮在路上(叁)Linux(二十二)--- linux磁盘挂载与卸载 mount umount

挂载就是将文件系统与目录结合的操作.挂载点就是目录,该目录就是进入分区或文件系统的入口. 一.挂载前的注意事项: 1.单一文件系统不应该被重复挂载在不同的挂载点中. 2.单一目录不应该重复挂载多个文件系统. 3.即将作为挂载点的目录理论上应该都是空目录才对. 注意:对应2和3,如果要挂载的目录不为空,那么挂载了新的文件系统之后,原来的目录会暂时消失(并非覆盖掉),系统会显示最新挂载的文件系统.新分区被卸载之后,原来的文件系统会重新显示出来. 二.命令介绍 mount [-t 文件系统] [-L