Python 使用nosetests设置断点--pdb选项

Python 使用nosetests设置断点--pdb选项,python,testing,nose,pdb,Python,Testing,Nose,Pdb,nosetests--pdb让我在出现错误或失败时暂停,但这对于我的需求来说太晚了。在执行过程中单步执行代码可以帮助我调试问题所在 然而,鼻测试是有帮助的,因为它们允许依赖相对进口的测试(即包中的测试) 如何在执行测试之前设置断点? 目前我正在使用: python -m pdb /path/to/my/nosetests testfile.py 这个解决方案是不够的。鼻测试干扰pdb输出,并且我的键盘控制(例如箭头键)损坏 使用进口pdb;set_trace()似乎是个好主意,但是nosete

nosetests--pdb
让我在出现错误或失败时暂停,但这对于我的需求来说太晚了。在执行过程中单步执行代码可以帮助我调试问题所在

然而,鼻测试是有帮助的,因为它们允许依赖相对进口的测试(即包中的测试)

如何在执行测试之前设置断点? 目前我正在使用:

python -m pdb /path/to/my/nosetests testfile.py
这个解决方案是不够的。鼻测试干扰pdb输出,并且我的键盘控制(例如箭头键)损坏

使用进口pdb;set_trace()似乎是个好主意,但是nosetests阻止了我访问pdb控制台

您可以添加

import pdb; pdb.set_trace() 
要在调试器中停止的源中的任何位置


确保将
-s
传递给nose,使其不会捕获
标准输出

比记住使用
-s
更好的是使用nose附带的
设置跟踪
变量。加

from nose.tools import set_trace; set_trace()

无论您想在何处进入调试器。stdin/out重定向将为您处理。我遇到的唯一奇怪的副作用是,在鼻子运行期间进行调试时,无法从pdb中重新启动代码(使用
运行
)。

如果您有ipython,则无限制地使用:

import ipdb; ipdb.set_trace() 

*无限精彩:就像ipython一样-自动完成、着色等。

如果您使用的是pytest,您可以使用

import pytest; pytest.set_trace()

请看。

我正要将此添加到我的问题中。这也不是一个可接受的解决方案。当与nosetests一起使用时,很明显这实际上是不可用的,因为对pdb控制台的访问被屏蔽了,并且无法执行任何pdb命令。将-s标志添加到nosetests以防止它捕获标准输出,您将能够很好地使用pdb。不起作用。使用此选项:
from nose.tools import set\u trace;set_trace()
有这方面的文档吗?如何跳出循环?您的意思是,一旦运行了
pdb
,如何导航?我肯定有文档,但在我的脑海里-
s
“进入”函数调用,
n
进入“下一个”语句,
u
向上移动堆栈,
d
向下移动。您可以使用
b
来设置断点,使用
c
来“继续”并退出单步调试程序。希望有帮助!这应该是公认的答案。它提供了原始pdb.set_trace()命令的所有常规功能。是否有可能使用此命令的ipython/ipdb版本?