我正在为一些遗留代码编写测试,这些代码到处都是catch-all结构,比如
try:
do_something()
do_something_else()
for x in some_huge_list():
do_more_things()
except Exception:
pass
我想知道try块中是否抛出了异常。你知道吗
我希望避免仅仅为了支持一些测试而在代码库中引入更改,并且我不希望使except
案例更加具体,因为我害怕无意中引入回归。你知道吗
是否有一种方法可以提取有关在运行时引发并随后处理的异常的信息?或者具有类似于eval
/exec
/apply
/call
的API的函数,该函数记录每个引发的异常的信息,让用户提供一个首先运行的异常处理程序,或者让用户注册一个回调,该回调在引发或捕获异常等事件时运行。你知道吗
如果没有一种方法可以检测是否抛出了异常,而不以一种非常恶劣的方式进入(C)Python运行时,那么对于测试单元中包含catch-all异常的代码,有什么好的策略呢?你知道吗
一个好的策略是测试可观察到的行为。由于异常被明确排除在可观察行为之外,我认为您不应该测试是否引发了异常。你知道吗
您唯一现实的选择是插入
except
处理程序。你知道吗Python确实记录异常信息,可以用^{} 检索,但是当函数退出(Python 2)或
try
语句完成(Python 3)时,该信息被清除。你知道吗相关问题 更多 >
编程相关推荐