调试where方法返回None

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调试where方法返回None相关的知识,希望对你有一定的参考价值。

我有一个很大的遗留Python方法,其中包含大约二十个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

上面是一个简单的代码片段。结果:

Traceback (most recent call last):
  File "/home/modwork_vums_d/src/manyreturns.py", line 8, in <module>
    assert not big_method(True, None) is None
AssertionError

回溯上面并没有多大帮助,因为我想在big_method()中看到这条线。在上面的例子中,我想看看我用<------标记的是哪个。

我使用PyCharm,但欢迎使用纯Python或其他解决方案。

仅供记录。有一个后续问题试图在PyCharm中启用此功能:PyCharm: Debugging: r(eturn) Continue execution until the current function returns

答案

pdb有一个r(eturn)命令来满足这个需求:

return)继续执行,直到当前函数返回。

例:

> /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

pdb doc中查看更多细节。

以上是关于调试where方法返回None的主要内容,如果未能解决你的问题,请参考以下文章

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

Python snippet(代码片段)

python使用上下文对代码片段进行计时,非装饰器

PHP代码-psysh调试代码片段工具

Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段

方便调试使用的代码片段