【发布时间】:2017-07-12 14:40:18
【问题描述】:
我正在调试一个单元测试失败,其中一些库的内部引发了异常;许多例外。我在命令行中使用ipdb 来调试它。
当运行./manage.py test path.to.test 并发生异常时,测试运行程序会捕获异常,打印堆栈跟踪并标记测试失败或其他情况。我明白为什么这是有用的,而不是让异常上升。
在我的情况下,我希望它上升,以便ipdb 抓住它并让我处于一个很好的位置来向上/向下移动帧并调试问题。我不想继续在try 中包装测试或将ipdb.set_trace() 调用放在引发异常的地方。这是一种痛苦,它正在减慢调试速度。通常这不是问题,但今天是。
问:我可以停止测试运行程序捕获异常,以便 ipdb 捕获它而不修改代码吗?
我觉得应该有一种方法可以做到这一点,因为它在调试时会非常有帮助,但是我在某个地方错过了它。
(Ps,Python 2.7,Django 1.6 sadface)
【问题讨论】:
-
是否可以选择使用 pytest 作为跑步者? docs.pytest.org/en/latest/… 它有一个特定的冒泡到 pdb 的选项。
-
只是出于好奇...您会选择使用 Pycharm 吗?您可能会发现使用它来设置断点要容易得多
-
@Sayse 我正在使用魅力,但由于某种原因(可能是代码库的巨大规模),使用魅力的断点和调试器运行测试的速度愚蠢缓慢。浪费了更多时间,所以我倾向于只使用 ipdb。
-
@MattSeymour 谢谢你的提示,我会看看pytest-django.readthedocs.io/en/latest
标签: python django unit-testing debugging