我正在调试单元测试失败,从而从某些库的内容中引发异常;很多例外。我在命令行中使用ipdb
来调试它。
运行./manage.py test path.to.test
并发生异常时,测试运行器会捕获异常,打印堆栈跟踪并标记测试失败或其他情况。我明白为什么这很有用,而不是让异常上升。
在我的情况下,我希望它上升,ipdb
抓住它,让我处于一个很好的位置,可以向上/向下移动框架并调试问题。我不想继续在try
中包装测试或将ipdb.set_trace()
调用放在引发异常的地方。这是一种痛苦,它正在减慢调试速度。通常这不是一个问题,但今天它是。
问:我可以阻止测试运行器捕获异常,以便ipdb
在不修改代码的情况下捕获它吗?
我觉得应该有一种方法可以做到这一点,因为在调试时它会非常有用,但我已经错过了它的某个地方。
(Ps,Python 2.7,Django 1.6 sadface )
答案 0 :(得分:1)
存在django-nose,一个django unittest runner
,它仍支持django 1.6和python 2.7。
鼻子有一个--pdb
选项:
在出现故障或错误时进入调试器
你可以按如下方式运行它:
nosetests --pdb
由于您希望使用ipdb
,因此this nose plugin允许nose
使用ipdb
:
nosetests --ipdb