我是靠谱客的博主 勤恳马里奥,最近开发中收集的这篇文章主要介绍异常处理结构Python内置异常类层次结构异常处理结构单元测试unittest,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

异常处理结构

  • Python内置异常类层次结构
  • 异常处理结构
    • try...except...
    • try...except...else...
    • try...except...finally...
    • 可以捕捉多种异常的异常处理结构
  • 单元测试unittest

Python内置异常类层次结构

Python内置异常类层次结构

异常处理结构

  • 先尝试运行代码,如果没有问题就正常执行,如果发生了错误尝试着去捕获和处理,最后实在没办法了才崩溃

try…except…

  • try子句中的代码块包含可能会引发异常语句,except子句则用来捕捉相应异常
  • 如果try子句中的代码引发异常并被except子句捕捉,就执行except子句的代码块
  • 如果try中的代码块没有出现异常就继续往下执行异常处理结构后面的代码
  • 如果出现异常但没有被except捕获,继续往外层抛出
  • 如果所有层都没有捕获并处理该异常,程序崩溃并将该异常呈现给最终用户
try:
    #可能会引发异常的代码,先执行一下试试
except Exception[as reason]:
    #如果try中的代码抛出异常并被except捕捉,就执行这里的代码
>>> 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子句中的代码没有引发异常,就继续执行这里的代码
  • 不要把太多代码放在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子句中的代码是否引发异常,都会执行这里的代码

可以捕捉多种异常的异常处理结构

try#可能会引发异常的代码
except Exception1:
     #处理异常类型1的代码
except EXception2:
    #处理异常类型2的代码
except Exception3:
    #处理异常类型3的代码
.
.
.
  • 可以同时包含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()每次测试完成之后自动调用该函数

最后

以上就是勤恳马里奥为你收集整理的异常处理结构Python内置异常类层次结构异常处理结构单元测试unittest的全部内容,希望文章能够帮你解决异常处理结构Python内置异常类层次结构异常处理结构单元测试unittest所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部