Ich debugging einen Komponententest fehlgeschlagen, wodurch eine Ausnahme von den Eingeweiden einiger Bibliotheken ausgelöst wird; viele Ausnahmen. Ich benutze ipdb
von der Kommandozeile, um es zu debuggen.Django/Python Unit Testing: Lassen Ausnahmen steigen
Wenn ./manage.py test path.to.test
ausgeführt wird und die Ausnahme auftritt, fängt der Test-Runner die Ausnahme ab, druckt einen Stack-Trace und markiert den Test als fehlgeschlagen oder was auch immer. Ich verstehe, warum das nützlich ist, anstatt die Ausnahme aufgehen zu lassen.
In meinem Fall möchte ich es so steigen ipdb
fängt es und landet mich in einer schönen Position, um Frames nach oben/unten zu bewegen und die Probleme zu debuggen. Ich möchte die Tests nicht in try
umhüllen oder aufrufen, wo die Ausnahmen ausgelöst werden. Es ist ein Schmerz und verlangsamt das Debugging. Normalerweise ist das kein Problem, aber heute ist es so.
Q: Kann ich den Test-Runner stoppen, der die Ausnahme abfängt, sodass ipdb
ihn stattdessen ohne Codeänderungen erfasst?
Ich habe das Gefühl, dass es einen Weg geben sollte, dies zu tun, da es beim Debuggen sehr hilfreich wäre, aber ich habe es irgendwo auf der Linie verpasst.
(Ps, Python 2.7, 1.6 Django sadface)
Verwenden Sie Pytest als Ihren Läufer eine Option? https://docs.pytest.org/en/latest/usage.html#dropping-to-pdb-python-debugger-on-failures Es hat eine spezielle Option für das Sprudeln zu pdb. –
Nur aus Neugier ... wäre Pycharm eine Option für dich? Sie könnten es viel einfacher finden, nur dies zu verwenden, um Breakpoints zu setzen – Sayse
@Sayse Ich benutze Charme, aber aus irgendeinem Grund (wahrscheinlich die riesige Größe der Codebasis) mit Charme Breakpoints und Debugger ist _stupidly_ langsam, um den Test zu laufen. Mehr Zeit verschwendet, also neige ich dazu, ipdb zu benutzen. –