我正在使用鼻子测试运行一套测试(.py 文件)。使用经典
import pdb; pdb.set_trace()
鼻子测试永远不会完成。它只是挂在设置断点的位置,但从不掉入 pdb 调试器。
任何想法为什么会这样?我尝试将断点移动到多个不同的位置(其他测试功能、其他文件)但无济于事。
-s
使用/选项运行鼻子,--nocapture
您将能够看到 pdb 提示并与调试器正常交互。
如果使用命令行,则意味着:-
python manage.py test -s [other-opts-and-args]
鼻子正在捕获输出并重定向它。所以,断点被击中,但你只是看不到它。您需要关闭输出重定向,以便调试输出显示在屏幕上。
如果您使用,鼻子可以为您做到这一点:
from nose.tools import set_trace; set_trace()
代替:
import pdb;pdb.set_trace()
在我的情况下,标志 -s/--nocapture 仍然没有解决它并将编译器放入 pdb。
您可以研究的另一个原因是,如果您在测试中使用 MySQL 等数据库,那么它不会被另一个同步进程锁定。就我而言,我已经启动了一个 python shell 来通过 SQL Alchemy 查询 MySQL 数据库,并且锁定了表。结果,我的鼻子测试挂了 - 没有运行/退出。
我杀死了锁定表格的python进程,而鼻子正在嗅探
> $ ps auxww | grep 蟒蛇 | awk '{打印 $2}' | 须藤 xargs 杀死 -9