假设我有以下代码:
def returns_false():
breakpoint()
return False
assert(returns_false())
print("Hello world")
是否有一系列 pdb 命令可以在不首先触发断言错误的情况下打印“Hello world”?
我尝试过的:
return True
s
进入返回模式,然后按 retval=True
或 locals()['__return__']=True
interact
,然后return True
,但这会引发异常但是这些都不会改变实际的返回值
只想提供两个想法:
第一个是使用包装函数来覆盖。就像:
def returns_false():
breakpoint()
return False
def wrapper():
result = returns_false()
return True
assert(wrapper())
print("Hello world")
或者,使用上下文管理器来修改函数的返回值。
class OverrideReturnValue:
def __init__(self, func, new_value):
self.func = func
self.new_value = new_value
def returns_false():
breakpoint()
return False
with OverrideReturnValue(returns_false, True):
assert(returns_false())
print("Hello world")