1、try……except
try:
try_suite
except:
exception block
上面except子句不跟任何异常和异常参数,所以无论try捕获了任何异常,都将交给except子句的exception block来处理。
如果我们要处理特定的异常,比如说,我们只想处理除零异常,如果其他异常出现,就让其抛出不做处理,该怎么办呢?这个时候,我们就要给except子句传入异常参数啦!那个ExceptionN就是我们要给except子句的异常类(请参考异常类那个表格),表示如果捕获到这类异常,就交给这个except子句来处理。比如:
try:
floatnum = float(raw_input("Please input a float:"))
intnum = int(floatnum)
print 100/intnum
except ZeroDivisionError:
print "Error:you must input a float num which is large or equal then 1!"
except ValueError:
print "Error:you must input a float num!"
*Python异常类*
NameError 尝试访问一个没有申明的变量
ZeroDivisionError 除数为0
SyntaxError 语法错误
IndexError 索引超出序列范围
KeyError 请求一个不存在的字典关键字
IOError 输入输出错误(比如你要读的文件不存在)
AttributeError 尝试访问未知的对象属性
ValueError 传给函数的参数类型不正确,比如给int()函数传入字符串形
2、try……except……else
作用:就是当没有检测到异常的时候,则执行else语句
3、finally子句
finally子句是无论是否检测到异常,都会执行的一段代码。我们可以丢掉except子句和else子句,单独使用try…finally,也可以配合except等使用。
4、断言
断言就是判断是否跟预期结果一致,不一致的话,测试用例直接失败,程序便不再执行下去。
assert expression[,reason]
assert是断言的关键词,执行该语句的时候,先判断表达式expression,如果表达式为真,则什么都不做;如果表达式不为真,则抛出异常。
断言使用的主要是assertEqual的方法
如验证百度搜索的标题是否为“123_百度搜索”
self.assertEqual(u"123_百度搜索",driver.title)
如要验证是否为false
self.assertFalse(driver.title)
如要验证是否为true
self.assertTrue(driver.title)
而验证为了保证失败也能正常运行下去,一般情况下都是在验证的基础上加异常捕获
如验证百度搜索的标题是否为“123_百度搜索”
try:
self.assertEqual(u"1234_百度搜索", driver.title)
except AssertionError as e:
print u"找不到这个标题"