selenium3 & python3 常用断言及异常处理(完整篇)

今天我们来聊一聊 异常断言

"异常"和"断言"

  • 异常
    • 常见异常类型
    • 异常用法
      • 1.try--except--else
      • 2.try--except--finally
    • 抛出异常
  • 断言
    • 断言的三种模式
    • 常用的断言方法
    • unittest 常用的断言方法

异常

常见异常类型

序号 异常 描述
1) BaseException 所有异常类的基类(python2.5之后)
2) Exception 所有异常类的基类,继承BaseException
3) AssertionError assert语句失败
4) AttirbuteError 试图访问未知的对象属性
5) FileNotFoundError 试图打开一个不存在的文件或目录
6) AttributeError 试图访问的对象没有属性
7) OSError 当系统函数返回一个系统相关的错误(包括I/O故障),如“找不到文件”或“磁盘已满”时,引发此异常
8) NameError 使用一个还没赋值对象的变量
9) IndexError 当一个序列超出范围时引发此异常
10) KeyError 试图访问你字典里不存在的键
11) IOEError 输入输出异常,基本是无法打开文件
12) ImportError 无法引入模块或者包,基本是路径问题
13) SyntaxError 当解析器遇到一个语法错误时引发此异常
14) KeyboardInterrupt 按下组合键Ctrl+C,程序被强行终止
15) TypeError 传入的对象类型与要求不符
16) VauleError 传入一个不被期望的值,即使类型正确

异常用法

1.try–except–else

except异常执行,else非异常执行

try:
    print(a)
except NameError as msg:
    print(msg)
else:
    print("没有异常时执行")

输出结果为:name ‘a’ is not defined

2.try–except–finally

except异常执行,finally正常异常都执行

try:
    print(a)
except NameError as msg:
    print(msg)
finally:
    print("不管是否出现异常,都会被执行")

输出结果为:
name ‘a’ is not defined
不管是否出现异常,都会被执行

抛出异常

raise关键字
>>可用来抛出一个异常信息。
>>只能使用Python提供的异常类。
>>如果想要raise使用自定义异常类,则自定义类需要继承Exception类

def say_hello(name=None):
   # name为空,抛出异常
    if name is None:
        raise NameError('"name" cannot be empty')
    else:
        print("hello,  %s" % name)

if __name__ == '__main__':
    say_hello()

运行结果,如下:
selenium3 & python3 常用断言及异常处理(完整篇)_第1张图片

断言

断言的三种模式

selenium提供了三种模式断言:
assert
>>Assert(断言) 失败时,该测试将终止。
verify
>>Verify(验证) 失败时,该测试将继续执行,并将错误记入日志显示屏 。
waitfor
>>Waitfor(等待) 用于等待某些条件变为真,若为真,则立即执行,若为假,则失败且暂停。一般跟SetTimeout时间一起用。

常用的断言方法

序号 断言 描述
1) assertLocation 判断当前是在正确的页面
2) assertTitle 检查当前页面的 title 是否正确
3) assertValue 检查 input 的值, checkbox 或 radio,有值为”on”无为”off”
4) assertSelected 检查 select 的下拉菜单中选中是否正确
5) assertSelectedOptions 检查下拉菜单中的选项的是否正确
6) assertText 检查指定元素的文本
7) assertTextPresent 检查在当前给用户显示的页面上是否有出现指定的文本
8) assertTextNotPresent 使检查在当前给用户显示的页面上是否没有出现指定的文本
9) assertAttribute 检查当前指定元素的属性的值
10) assertTable 检查 table 里的某个 cell 中的值
11) assertEditable 检查指定的 input 是否可以编辑
12) assertNotEditable 检查指定的 input 是否不可以编辑
13) assertAlert 检查是否有产生带指定 message 的 alert 对话框
14) verifyTitle 检查预期的页面标题
15) verifyTextPresent 验证预期的文本是否在页面上的某个位置
16) verifyElementPresent 验证预期的UI元素,它的HTML标签的定义,是否在当前网页上
17) verifyText 核实预期的文本和相应的HTML标签是否都存在于页面上
18) verifyTable 验证表的预期内容
19) waitForPageToLoad 暂停执行,直到预期的新的页面加载
20) waitForElementPresent 等待检验某元素的存在。为真时,则执行

unittest 常用的断言方法

序号 unittest常用断言 描述
1) assertEqual(self, first, second, msg=None) 判断两个参数相等:first == second
2) assertNotEqual(self, first, second, msg=None) 判断两个参数不相等:first != second
3) assertIn(self, member, container, msg=None) 判断是字符串是否包含:member in container
4) assertNotIn(self, member, container, msg=None) 判断是字符串是否不包含:member not in container
5) assertTrue(self, expr, msg=None) 判断是否为真:expr is True
6) assertFalse(self, expr, msg=None) 判断是否为假:expr is False
7) assertIsNone(self, obj, msg=None) 判断是否为 None:obj is None
8) assertIsNotNone(self, obj, msg=None) 判断是否不为 None:obj is not None

以上这几条,是常用的,但是unittest提供的断言远不止这些,更多断言方法,请参照: unittest官网

你可能感兴趣的:(Python,Selenium)