Ipdb с модулем unittest python

Есть ли удобный способ получить отладчик ipdb в случае исключения при запуске тестов с модулем unittest python?

Удобно отлаживать код python с помощью ipython --pdb my_script.py. Однако, когда я использую модуль unittest,

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

unittest ловит исключение и завершает работу.

Ответ 1

Мне полезно сначала запустить тесты и посмотреть, произошла ли какая-либо ошибка. Это помогает получить целостное представление об ошибке. Например, существует более одного теста, который терпит неудачу, и на какой из них следует смотреть в первую очередь.

Проанализировав это, это мой подход к циклу тестирования/отладки. В вашем тесте:

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

Теперь запустите тест с помощью:

nosetests -s tests/test_example.py
Флаг

-s поможет вам войти в режим ввода вместо получения исключения из носа.

Sidenote: У меня есть набор ярлыков для вставки import ipdb as pdb; pdb.set_trace() в настройки IntelliJ (PyCharm), поэтому я могу вставить эту одну строку, чтобы остановить, где бы я ни захотел в своем коде.

Ответ 2

Нос теперь имеет плагин ipdb. Вы можете установить его через:

pip install ipdbplugin

Затем проверьте свою программу,

nosetests --ipdb <test_file>

Ответ 3

Имеется флаг% pdb, который вы можете установить в ipython.It вызывается отладчик, если возникает какое-либо исключение.