筱团Blog筱团のBlog

python 高级用法 -- 错误、调试和测试

筱团·2022-07-29 10:58·65 次阅读

python 高级用法 -- 错误、调试和测试

Prerequisite#

参考文章:廖雪峰的文章
常用异常(中文分析):Python 异常处理

错误处理#

常见写法(以处理全部异常 Exception,与断言语句失败 AssertionError 为例)

Copy
# 处理全部异常 try: a = '2' + 2 except Exception as e: print(e)
Copy
# 不追踪错误写法 # finally 语句写不写都行,但写了一定会执行 def function(): try: a = 100 assert a == 10 except AssertionError as e: print("断言语句异常") finally: print("End") function() """ 断言语句异常 End """ # 追踪错误写法 def function(): try: a = 100 assert a == 10 except: raise AssertionError("断言语句异常") from None finally: print("End") function() """ Traceback (most recent call last): File "C:\Users\WPS\Desktop\Temporary\test.py", line 19, in <module> function() File "C:\Users\WPS\Desktop\Temporary\test.py", line 15, in function raise AssertionError("断言语句异常") AssertionError: 断言语句异常 """

更多规则

Copy
# 捕获多个异常 try: print('try...') r = 10 / int('2') print('result:', r) except ValueError as e: print('ValueError:', e) except ZeroDivisionError as e: print('ZeroDivisionError:', e) # 如果没有错误发生 else: print('no error!') finally: print('finally...') print('END')

调试#

方法有 print、assert、logging、pdb、IDE 等,但我只用 logging

Copy
import logging logging.basicConfig(level=logging.DEBUG) s = '0' n = int(s) logging.debug('n = %d' % n) print(10 / n) """ DEBUG:root:n = 0 Traceback (most recent call last): File "c:\Users\WPS\Desktop\Temporary\test.py", line 80, in <module> print(10 / n) ZeroDivisionError: division by zero """ # 注意除了打印报错信息,n 也打印出来了 # 如果开头 logging 的配置换成如下 logging.basicConfig(level=logging.INFO) # 那么就不会打印出 n 了

可替换的地方有开头 level=logging.DEBUG 和报错语句 logging.debug()
显示报错的等级为:debug < info < warning < error
选定开头的报错等级,那么报错语句在这个等级以下的,都会显示报错(如果语句报错了)

单元测试#

基本是测试 python 代码的,使用到了 unittest 模块,内置许多用于测试的函数,如 assertEqual 检验是否相等、assertRaises 检验是否抛出相同异常
我觉得用不到,就不写了

文档测试#

讲的是写文档时注释放的是代码执行示例, 如果要执行的化可以用 doctest 模块
用不到 +2,也不写了

posted @   筱团  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示
目录