Python内置异常类层次结构
Python内置异常类层次结构
异常处理结构
先尝试运行代码,如果没有问题就正常执行,如果发生了错误尝试着去捕获和处理,最后实在没办法了才崩溃
try…except…
try子句中的代码块包含可能会引发异常语句,except子句则用来捕捉相应异常 如果try子句中的代码引发异常并被except子句捕捉,就执行except子句的代码块 如果try中的代码块没有出现异常就继续往下执行异常处理结构后面的代码 如果出现异常但没有被except捕获,继续往外层抛出 如果所有层都没有捕获并处理该异常,程序崩溃并将该异常呈现给最终用户
try :
except Exception[ as reason] :
>> > while True :
x= input ( 'Please input:' )
try :
x= int ( x)
print ( 'You have input{0}' . format ( x) )
break
except Exception as e:
print ( 'Error' )
Please input : 23s
Error
Please input : 4
You have input4
try…except…else…
如果try中的代码抛出了异常并且被except语句捕捉则执行相应的异常处理代码,这种情况下就不会执行else中的代码 如果try中的代码没有引发异常,则执行else块的代码
try :
except Exception[ as reason] :
else :
不要把太多代码放在try中,而是应该只放真的可能会引发异常的代码
>> > while True :
x= input ( 'Please input' )
try :
x= int ( x)
except Exception as e:
print ( 'Error' )
else :
print ( 'You have input {0}' . format ( x) )
break
Please input8c
Error
Please input8
You have input 8
try…except…finally…
在这种结构中,无论try中的代码是否发生异常,也不管抛出的异常有没有被except语句捕获,finally子句中的代码总是会得到执行 所以,finally中的代码常用来做一些清理工作,例如释放try子句中的代码申请的资源
try :
except Exception [ as reason] :
finally :
可以捕捉多种异常的异常处理结构
try :
except Exception1:
except EXception2:
except Exception3:
.
.
.
可以同时包含else子句、except子句和finally子句
单元测试unittest
软件测试的方法有很多,从软件工程角度来讲,可以分为白盒测试和黑盒测试两大类 白盒测试主要通过阅读程序源代码来判断是否符合功能要求 黑盒测试不关心模块的内部实现方式,只关心其功能是否正确,通过精心设计一些测试用例来检验模块的输入和输出是否正确,最终判断是否符合预定的功能要求 一般一般黑河测试为主,白盒测试为辅 Python标准库unittest提供了大量用于单元测试的类和方法,其中最常用的是TestCase类
方法名称 功能说明 assertEqual(a,b) a==b assertTrue(x) bool(x) is True assertIs(a,b) a is b assertIsNone(x) x is None assertIn(a,b) a in b assertIsInstance(a,b) isinstance(a,b) assertAlmostEqual(a,b) round(a-b,7)==0 assertGreater(a,b) a>b assertLess(a,b) a<b assertRegex(s,r) r.search(s) assertNotEqual(a,b) a!=b assertFalse(x) bool(x) is Flase assertIsNot(a,b) a is not b assertIsNotNone(x) x is not None assertNotIn(a,b) a not in b assertNotIsInstance(a,b) not isinstance(a,b) assertNotAlmostEqual(a,b) round(a-b,7)!=0 assertGreaterEqual(a,b) a>=b assertLessEqual(a,b) a<=b assertNotRegex(s,r) not r.search(s) setUp() 每项测试开始之前自动调用该函数 tearDown() 每次测试完成之后自动调用该函数