pdb.set_trace()导致冻结的nosetests,不进入debugg

2024-04-19 15:08:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用notests运行一组测试(.py文件)。使用经典

import pdb; pdb.set_trace()

鼻子测试从来没有完成过。它只挂在设置了断点的地方,但不会掉到pdb调试器中。

你知道为什么吗?我试图将断点移动到许多不同的位置(其他测试函数、其他文件),但都没有成功。


Tags: 文件pyimport地方trace测试函数鼻子调试器
3条回答

在我的例子中,标记-s/-nocapture仍然没有解析它并将编译器放入pdb。

另一个可以研究的原因是,如果使用MySQL之类的数据库作为测试的一部分,那么它不会被另一个同时进行的进程锁定。在我的例子中,我启动了一个python shell,通过SQL炼金术查询MySQL数据库,它锁定了表。结果,我的鼻子测试是挂着的-不是跑/退出。

我杀死了锁定表的python进程,Nose重新开始嗅探

>;$ps auxww | grep python | awk'{打印$2}| sudo xargs kill-9

Nose正在捕获输出并重定向它。所以,断点被击中了,但你看不到它。您需要关闭输出重定向,以便调试输出显示在屏幕上。

鼻子可以帮你,如果你使用:

from nose.tools import set_trace; set_trace()

而不是:

import pdb;pdb.set_trace()

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

如果使用命令行,即:

python manage.py  test -s [other-opts-and-args]

相关问题 更多 >