Python 调试,其中方法返回None
我有一个大型的传统Python方法,它包含大约20条Python 调试,其中方法返回None,python,debugging,pycharm,Python,Debugging,Pycharm,我有一个大型的传统Python方法,它包含大约20条return语句 该方法不应返回None,但它会返回。它可以在一个简单的测试用例中重复 到目前为止,我使用了一个调试器并逐行遍历代码以找到匹配的return语句 但是有更简单的方法吗 有没有一种方法可以在方法返回None时立即引发异常 当然,我需要看到包含return语句的行 例如: def big_method(arg1, some_var): #.... many returns if arg1: retur
return
语句
该方法不应返回None
,但它会返回。它可以在一个简单的测试用例中重复
到目前为止,我使用了一个调试器并逐行遍历代码以找到匹配的return语句
但是有更简单的方法吗
有没有一种方法可以在方法返回None时立即引发异常
当然,我需要看到包含return语句的行
例如:
def big_method(arg1, some_var):
#.... many returns
if arg1:
return some_var # <------
#... many returns
assert not big_method(True, None) is None
def big_方法(arg1,一些变量):
#.... 许多回报
如果arg1:
返回一些变量,pdb有一个r(eturn)
命令用于此需要:
r(eturn)
继续执行,直到当前函数返回
例如:
> /Users/georgexsh/wasteland/tmp/app.py(6)<module>()
-> assert not big_method(True, None) is None
(Pdb) s
--Call--
> /Users/georgexsh/wasteland/tmp/app.py(1)big_method()
-> def big_method(arg1, some_var):
(Pdb) r
--Return--
> /Users/georgexsh/wasteland/tmp/app.py(3)big_method()->None
-> return some_var
/Users/georgexsh/wasteland/tmp/app.py(6)()
->assert not big_方法(True,None)为None
(Pdb)s
--召唤--
>/Users/georgexsh/wasteland/tmp/app.py(1)big_method()
->def big_方法(arg1,一些变量):
(Pdb)r
--返回--
>/Users/georgexsh/wasteland/tmp/app.py(3)big_method()->None
->返回一些变量
请参阅中的详细信息。有一种可能的解决方案:。我想知道这是否可能,执行big_方法的帧已被回收。也许您可以利用解释器的跟踪函数,记录被调用函数的执行路径,然后在外部断言失败时打印出来。但是,由于您正在使用调试器,我想它应该有一个类似“运行直到当前函数返回”的功能,它将在您需要的行停止。@guettli
> /Users/georgexsh/wasteland/tmp/app.py(6)<module>()
-> assert not big_method(True, None) is None
(Pdb) s
--Call--
> /Users/georgexsh/wasteland/tmp/app.py(1)big_method()
-> def big_method(arg1, some_var):
(Pdb) r
--Return--
> /Users/georgexsh/wasteland/tmp/app.py(3)big_method()->None
-> return some_var