Ответ 1
Ошибка возникает из-за вывода вывода py.test.
Вы должны запустить py.test с опцией -s
(отключить вывод захвата). Например:
py.test -s my_test.py
Я использую pytest для своего набора тестов. Во время обнаружения ошибок в сложном межкомпонентном тестировании я хотел бы разместить import ipdb; ipdb.set_trace()
в середине моего кода, чтобы позволить мне отлаживать его.
Однако, поскольку ловушки pytest sys.stdin/sys.stdout ipdb терпят неудачу. Как я могу использовать ipdb во время тестирования с помощью pytest.
Мне не интересно переходить на pdb или ipdb после сбоя, но размещать перерывы в любом месте кода и иметь возможность отлаживать его там до возникновения сбоя.
Ошибка возникает из-за вывода вывода py.test.
Вы должны запустить py.test с опцией -s
(отключить вывод захвата). Например:
py.test -s my_test.py
Установите плагин pytest-ipdb, а затем используйте
pytest.set_trace()
pytest-ipdb, к сожалению, больше не поддерживается.
Решение - запустить
pytest my_test.py --pdb --pdbcls=IPython.terminal.debugger:Pdb
Из справки:
pytest -h
--pdb start the interactive Python debugger on errors.
--pdbcls=modulename:classname
start a custom interactive Python debugger on errors.
For example:
--pdbcls=IPython.terminal.debugger:TerminalPdb
Разница только в том, что TerminalPdb, похоже, выдает erros, но Pdb не (Ipython docs).