Ich verwende pytest für meine Testsuite. Während ich Fehler in komplexen Tests zwischen Komponenten abfange, möchte ich sie import ipdb; ipdb.set_trace()
in die Mitte meines Codes stellen, damit ich sie debuggen kann.
Da jedoch pytest sys.stdin / sys.stdout abfängt, schlägt ipdb fehl. Wie kann ich ipdb beim Testen mit pytest verwenden?
Ich bin nicht daran interessiert, nach einem Fehler zu pdb oder ipdb zu springen, sondern Pausen an einer beliebigen Stelle im Code zu platzieren und dort zu debuggen, bevor der Fehler auftritt.
addopts = -s
es derpytest.ini
Datei hinzu.pytest-ipdb wird leider nicht mehr unterstützt.
Die Lösung ist zu laufen
pytest my_test.py --pdb --pdbcls=IPython.terminal.debugger:Pdb
Aus dem Hilfebefehl:
Der Unterschied ist nur, dass TerminalPdb Fehler zu werfen scheint, Pdb jedoch nicht ( Ipython-Dokumente ).
quelle
TerminalPdb
funktioniert wieder und die bevorzugte Lösung, da Sie die Registerkarte vervollständigen können.Das benutze ich
py.test tests/ --pdbcls=IPython.core.debugger:Pdb -s
quelle
Ab 2019-11 sollte Folgendes behoben werden:
quelle
prompt-toolkit
Version2.0.10
installieren, funktioniert ipdb wieder einwandfrei, da es aufgrund der kürzlichen Aktualisierung dieses Pakets auf 3.0.0