Django / Python单元测试:让异常上升

时间:2017-07-12 14:40:19

标签: python django unit-testing debugging

我正在调试单元测试失败,从而从某些库的内容中引发异常;很多例外。我在命令行中使用ipdb来调试它。

运行./manage.py test path.to.test并发生异常时,测试运行器会捕获异常,打印堆栈跟踪并标记测试失败或其他情况。我明白为什么这很有用,而不是让异常上升。

在我的情况下,我希望它上升,ipdb抓住它,让我处于一个很好的位置,可以向上/向下移动框架并调试问题。我不想继续在try中包装测试或将ipdb.set_trace()调用放在引发异常的地方。这是一种痛苦,它正在减慢调试速度。通常这不是一个问题,但今天它是。

问:我可以阻止测试运行器捕获异常,以便ipdb在不修改代码的情况下捕获它吗?

我觉得应该有一种方法可以做到这一点,因为在调试时它会非常有用,但我已经错过了它的某个地方。

(Ps,Python 2.7,Django 1.6 sadface

1 个答案:

答案 0 :(得分:1)

存在django-nose,一个django unittest runner,它仍支持django 1.6和python 2.7。

鼻子有一个--pdb选项:

  

在出现故障或错误时进入调试器

你可以按如下方式运行它:

nosetests --pdb

由于您希望使用ipdb,因此this nose plugin允许nose使用ipdb

nosetests --ipdb