pdb.set_trace()导致冻结的nosetests,不会进入调试器

Bod*_*dhi 54 python nosetests pdb

我正在使用nosetests运行一套测试(.py文件).使用经典

import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

测试运行从未完成.它只是挂在断点已设置的位置,但从不插入pdb调试器.

任何想法为什么会这样?我已经尝试将断点移动到许多不同的位置(其他测试功能,其他文件)无济于事.

std*_*err 58

使用-s/ --nocapture选项运行nose,您将能够看到pdb提示符并正常与调试器进行交互.

如果使用命令行意味着: -

python manage.py  test -s [other-opts-and-args]
Run Code Online (Sandbox Code Playgroud)

  • 如果你有setup.cfg,在[nosetests]下添加一行'nocapture = 1' (4认同)

Joe*_* L. 34

鼻子正在捕获输出并重定向它.因此,断点被击中,但你只是看不到它.您需要关闭输出重定向,以便调试输出显示在屏幕上.

如果你使用鼻子可以为你做这件事:

from nose.tools import set_trace; set_trace()
Run Code Online (Sandbox Code Playgroud)

代替:

import pdb;pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)