用nosetests设置断点–pdb选项

Nosetests –pdb让我停止错误或失败,但这对于我的需求来说已经太晚了。 在执行期间逐步执行代码可以帮助我debugging问题出在哪里。

然而,鼻testing是有用的,因为它们允许依赖于相对import的testing(即,testing包)。

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

python -m pdb /path/to/my/nosetests testfile.py 

这个解决scheme是不够的。 鼻音testing会干扰pdb的输出,而我的键盘控制(如箭头键)则被打破。

使用导入pdb; pdb.set_trace()似乎是一个好主意,但是nosetests阻止我访问pdb控制台。

你可以加

 import pdb; pdb.set_trace() 

您希望停止在debugging器中的源代码中的任何位置。

确保你传递给鼻子,以便它不捕获stdout

甚至比记住使用-s更好的是使用鼻子附带的set_trace变体。 加

 from nose.tools import set_trace; set_trace() 

无论你想进入debugging器。 标准input/输出redirect将为您照顾。 我遇到的唯一奇怪的副作用是在鼻子运行期间debugging期间无法从pdb(使用run )重新启动代码。

如果你有ipython ,对于无限的迷人使用:

 import ipdb; ipdb.set_trace()