J'utilise pytest pour ma suite de tests. Tout en attrapant des bogues dans des tests inter-composants complexes, je voudrais placer import ipdb; ipdb.set_trace()
au milieu de mon code pour me permettre de le déboguer.
Cependant, comme pytest intercepte sys.stdin / sys.stdout, ipdb échoue. Comment puis-je utiliser ipdb tout en testant avec pytest.
Je ne suis pas intéressé à passer à pdb ou ipdb après un échec, mais à placer des pauses n'importe où dans le code et à pouvoir le déboguer là-bas avant que l'échec ne se produise.
addopts = -s
aupytest.ini
fichier.pytest-ipdb n'est malheureusement plus supporté.
La solution est de courir
pytest my_test.py --pdb --pdbcls=IPython.terminal.debugger:Pdb
Depuis la commande help:
La différence est simplement que TerminalPdb semble générer des erreurs, mais pas Pdb ( documentation Ipython ).
la source
TerminalPdb
fonctionne à nouveau et la solution préférée car elle vous donnera l'achèvement de l'onglet.C'est ce que j'utilise
py.test tests/ --pdbcls=IPython.core.debugger:Pdb -s
la source
À partir de 2019-11, voici ce qui devrait y remédier:
la source
prompt-toolkit
version,2.0.10
ipdb fonctionnera à nouveau correctement, car il se casse en raison de la récente mise à jour de ce paquet vers la version 3.0.0