12

在使用 python 的 unittest 模块运行测试时,有什么方便的方法可以在异常上获取 ipdb 调试器?

使用 . 调试 python 代码很方便ipython --pdb my_script.py。但是,当我使用 unittest 模块时,

class MyTestCase(unittest.TestCase):
    def runTest(self):
        x = 0
        y = 3/x

unittest 捕获异常并退出。

4

3 回答 3

2

我发现先运行测试并查看是否发生任何错误很有帮助。这有助于全面了解错误。例如,是否有不止一个测试失败,应该首先查看哪一个。

经过分析,这是我的测试/调试周期方法。在您的测试中:

def test_foo_is_bar(self):
    import ipdb
    ipdb.set_trace()
    self.assertEqual('foo', 'bar')

现在运行测试:

nosetests -s tests/test_example.py

-sflag 将帮助您进入输入模式,而不是从鼻子获取异常。

旁注:我已将快捷方式设置为粘贴import ipdb as pdb; pdb.set_trace()到 IntelliJ(PyCharm) 设置中,这样我就可以插入这一行以在代码中的任何位置停止。

于 2017-02-20T16:29:04.423 回答
1

鼻子现在有一个 ipdb 插件。您可以通过以下方式安装它:

pip install ipdbplugin

然后测试你的程序,

nosetests --ipdb <test_file>
于 2019-09-19T07:10:51.860 回答
-1

您可以在 ipython 中设置一个 %pdb 标志。如果发生任何异常,它将调用调试器。

于 2016-09-06T06:44:31.580 回答