在使用 python 的 unittest 模块运行测试时,有什么方便的方法可以在异常上获取 ipdb 调试器?
使用 . 调试 python 代码很方便ipython --pdb my_script.py
。但是,当我使用 unittest 模块时,
class MyTestCase(unittest.TestCase):
def runTest(self):
x = 0
y = 3/x
unittest 捕获异常并退出。
在使用 python 的 unittest 模块运行测试时,有什么方便的方法可以在异常上获取 ipdb 调试器?
使用 . 调试 python 代码很方便ipython --pdb my_script.py
。但是,当我使用 unittest 模块时,
class MyTestCase(unittest.TestCase):
def runTest(self):
x = 0
y = 3/x
unittest 捕获异常并退出。
我发现先运行测试并查看是否发生任何错误很有帮助。这有助于全面了解错误。例如,是否有不止一个测试失败,应该首先查看哪一个。
经过分析,这是我的测试/调试周期方法。在您的测试中:
def test_foo_is_bar(self):
import ipdb
ipdb.set_trace()
self.assertEqual('foo', 'bar')
现在运行测试:
nosetests -s tests/test_example.py
-s
flag 将帮助您进入输入模式,而不是从鼻子获取异常。
旁注:我已将快捷方式设置为粘贴import ipdb as pdb; pdb.set_trace()
到 IntelliJ(PyCharm) 设置中,这样我就可以插入这一行以在代码中的任何位置停止。
鼻子现在有一个 ipdb 插件。您可以通过以下方式安装它:
pip install ipdbplugin
然后测试你的程序,
nosetests --ipdb <test_file>
您可以在 ipython 中设置一个 %pdb 标志。如果发生任何异常,它将调用调试器。