Python基础之七异常与调试
来源:互联网 发布:淘宝洗衣液假货多吗 编辑:程序博客网 时间:2024/06/06 05:18
''' try'''from asyncio.test_utils import TestCasetry: print('try...') r = 20 / 0 print('result:', r)except ZeroDivisionError as e: print('except:', e)finally: print('finally...')print('END')try: print('try...') r = 20 / int('a') print('result:', r)except ValueError as e: print('ValueError', e)finally: print('finally...')print('END')''' 调用堆栈 如果错误没有被捕捉,它就会一直向上抛,最后被Python解释器步骤,打印一个错误信息然后退出'''def foo(s): return 10 / int(s)def bar(s): return foo(s) * 2def main(): bar('0')#print(main())''' 记录错误 logging'''import loggingdef foo(s): return 0 / int(s)def bar(s): return foo(s) * 2def main(): try: bar(0) except Exception as e: logging.exception(e)#print(main())''' 抛出错误 因为错误是class, 捕获一个错误就是捕获到该class的一个实例。因此, 错误不是凭空产生的而是有意创建并抛出的。 Python的内置函数会抛出很多类型的错误,我们自己编写也可以抛出错误 如果要抛出错误,首先根据需要们可以定义一个错误的class, 选择好继承关系,然后,用raise语句抛出一个错误实例'''class FooError(ValueError): passdef foo(s): n = int(s) if n == 0: raise FooError('invalid value: %s' % s) return 10 / n#print(foo('0'))''' 调试 print()方法打印 断言 assert logging IDE断点调试'''def foo(s): n = int(s) assert n != 0, 'n is zero!'#True return 10 / ndef main(): foo('0')#print(main())import loggings = '0'n = int(s)logging.info('s = %d' % n)#print(10 / n)''' 单元测试 测试方法必须为test开头 setUp()和tearDown()方法会在测试的时候前后调用(例如测试数据库打开关闭) 小结 单元测试可以有效测试某个程序莫阔的行为,是未来重构代码的信息保证 单元测试的测试用例要覆盖常用的输入组合,边界条件和异常 单元测试代码要非常简单,如果测试代码复杂,那么测试代码本身就可能存在bug 单元测试通过了并不意味着程序没有bug了,但是不通过一定是有bug'''class Dict(dict): def __init__(self, **kw): super().__init__(**kw) def __getattr__(self, key): try: return self[key] except KeyError: raise AttributeError(r"'Dict' object hs no attribute '%s'" % key) def __setattr__(self, key, value): self[key] = valueimport unittestclass TestDict(unittest.TestCase): def test_init(self): d = Dict(a=1, b='test') self.assertEqual(d.a, 1) self.assertEqual(d.b, 'test') self.assertTrue(isinstance(d, dict)) def test_key(self): d = Dict() d['key'] = 'value' self.assertEqual(d.key, 'value') def test_attr(self): d = Dict() d.key = 'value' self.assertTrue('key' in d) self.assertEqual(d['key'], 'value') def setUp(self): print('setUp...') def tearDown(self): print('tearDown...')
更多精彩内容访问个人站点www.gaocaishun.cn
0 0
- Python基础之七异常与调试
- java基础之异常与调试
- Python调试与异常
- python学习之路七--文件与异常
- python基础之异常处理、调试和正则表达式
- python基础之异常
- Python 基础之异常
- Python零基础入门之七变量与内置函数
- Python教程之七-----错误和异常
- python基础之异常处理
- python基础之异常处理
- python异常处理与调试,正则表达式
- Python(异常处理与程序调试)
- python基础之各种异常及其解决方案
- Python零基础入门十三之异常
- 自学Python之Python基础:(七)字符串处理技巧
- Python基础七
- Python基础学习<七>
- 一起学WEB(五) 更加清晰的组织你的网站资源
- Python基础之四函数式编程
- Python基础之五面向对象编程
- springmvc flashattributes 失效
- Python基础之六面向对象高级编程
- Python基础之七异常与调试
- Python基础之八IO编程
- HTTP协议详解
- Python基础之九进程和线程
- Python基础之十正则表达式
- Python基础之十一图像界面
- Cisco路由技术:在路由器上配置Track,实现静态路由器的冗余1
- Python基础之十二常用內建模块
- 关于HTTPS