Estou usando o pytest para meu conjunto de testes. Ao detectar bugs em testes complexos de intercomponentes, gostaria de colocá- import ipdb; ipdb.set_trace()
los no meio do meu código para permitir que eu o depure.
No entanto, como pytest intercepta sys.stdin / sys.stdout ipdb falha. Como posso usar o ipdb durante o teste com o pytest.
Não estou interessado em saltar para pdb ou ipdb após uma falha, mas em colocar quebras em qualquer lugar do código e ser capaz de depurá-lo antes que a falha ocorra.
addopts = -s
aopytest.ini
arquivo.Infelizmente, o pytest-ipdb não é mais compatível.
A solução é executar
pytest my_test.py --pdb --pdbcls=IPython.terminal.debugger:Pdb
A partir do comando help:
A diferença é apenas que TerminalPdb parece lançar erros, mas Pdb não ( documentos Ipython ).
fonte
TerminalPdb
está funcionando novamente e é a solução preferida, pois permitirá o preenchimento com guia.Isso é o que eu uso
py.test tests/ --pdbcls=IPython.core.debugger:Pdb -s
fonte
A partir de 11 de 2019, aqui está o que deve corrigir:
fonte
prompt-toolkit
versão,2.0.10
então o ipdb funcionará bem novamente, porque ele quebra devido à atualização recente deste pacote para 3.0.0