2024-04-19 15:08:55 发布
网友
我正在使用notests运行一组测试(.py文件)。使用经典
import pdb; pdb.set_trace()
鼻子测试从来没有完成过。它只挂在设置了断点的地方,但不会掉到pdb调试器中。
你知道为什么吗?我试图将断点移动到许多不同的位置(其他测试函数、其他文件),但都没有成功。
在我的例子中,标记-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提示并与调试器正常交互。
-s
--nocapture
如果使用命令行,即:
python manage.py test -s [other-opts-and-args]
在我的例子中,标记-s/-nocapture仍然没有解析它并将编译器放入pdb。
另一个可以研究的原因是,如果使用MySQL之类的数据库作为测试的一部分,那么它不会被另一个同时进行的进程锁定。在我的例子中,我启动了一个python shell,通过SQL炼金术查询MySQL数据库,它锁定了表。结果,我的鼻子测试是挂着的-不是跑/退出。
我杀死了锁定表的python进程,Nose重新开始嗅探
>;$ps auxww | grep python | awk'{打印$2}| sudo xargs kill-9
Nose正在捕获输出并重定向它。所以,断点被击中了,但你看不到它。您需要关闭输出重定向,以便调试输出显示在屏幕上。
鼻子可以帮你,如果你使用:
而不是:
使用
-s
/--nocapture
选项运行nose,您将能够看到pdb提示并与调试器正常交互。如果使用命令行,即:
相关问题 更多 >
编程相关推荐