selenium3 & python3 常用断言及异常处理(完整篇)
今天我们来聊一聊 异常 和断言!
"异常"和"断言"
异常常见异常类型异常用法1.try--except--else2.try--except--finally
抛出异常
断言断言的三种模式常用的断言方法unittest 常用的断言方法
异常
常见异常类型
序号异常描述1)BaseException所有异常类的基类(python2.5之后)2)Exception所有异常类的基类,继承BaseException3)AssertionErrorassert语句失败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()
运行结果,如下:
断言
断言的三种模式
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 == second2)assertNotEqual(self, first, second, msg=None)判断两个参数不相等:first != second3)assertIn(self, member, container, msg=None)判断是字符串是否包含:member in container4)assertNotIn(self, member, container, msg=None)判断是字符串是否不包含:member not in container5)assertTrue(self, expr, msg=None)判断是否为真:expr is True6)assertFalse(self, expr, msg=None)判断是否为假:expr is False7)assertIsNone(self, obj, msg=None)判断是否为 None:obj is None8)assertIsNotNone(self, obj, msg=None)判断是否不为 None:obj is not None
以上这几条,是常用的,但是unittest提供的断言远不止这些,更多断言方法,请参照: unittest官网