2010-11-03 10 views
8

Ich benutze PyDev (mit Aptana), um eine Python Pylons App zu schreiben und zu debuggen, und ich möchte die Tests im Debugger schrittweise durchlaufen.Interaktives Debuggen mit nosetests in PyDev

Ist es möglich, nosetests durch PyDev zu starten und an Haltepunkten zu stoppen?

+0

die Antwort in dieser Frage finden: http: // Stapelüberlauf.com/questions/8191146/pydev-nosetests-test-run – superlee

Antwort

0

Versuchen Sie import pydevd; pydevd.settrace(), wo ein Haltepunkt möchte.

2

Hier ist, was ich tun, um nosetests mit Eclipse Pydev (hoffe, das wird Ihnen helfen) zu tun.

allererst erstelle ich ein Skript Python und ich steckte es in die Wurzel meines Paketverzeichnis:

--Package 
    | 
    | -- runtest.py 
    | 
    | -- ... (others modules) 

und in runtest.py i setzen:

import nose 
nose.main() 

jetzt gehe ich zu im Menü Run -> Run-Konfigurationen und ich erstelle eine neue Konfiguration von Pydev Django Ich wähle mein Paket und setzen runtest.py in Hauptmodul, gehe ich neben Argumenten Tab im gleichen Widget und ich habe in Programm Argumenten den Weg zu meinem Projekt und andere arg an das Skript Beispiel passieren:

/home/me/projects/src --with-doctest # Run doctests too 

jetzt nach auf Nehmen klicken i kann diese Konfiguration ausführen.

Für das Debuggen Sie diese Konfiguration im Debug-Modus laufen und Ihre Pause an einer beliebigen Stelle im Code setzen und Sie können das grandios Debug-Widget verwenden mehrere Aktion zu tun: Schritt in Vars zu sehen ...

NB : für doctests glaube ich leider nicht, dass du einen Breakpoint in die Zeile von doctest setzen kannst, aber was du tun kannst, ist deinen Breakpoint in def def der Funktion zu setzen, die vom Doctest aufgerufen wird und so kann man den Debug-Modus benutzen.

+0

Also das ist es nicht wirklich integrieren mit unittest runner plugin - Sie erhalten nicht die Ergebnisse in der Plugin-Ansicht, oder? –

0

Ich habe das funktioniert, etwas - das heißt, ich habe keine Breakpoints und Stepping funktioniert, aber ich bekomme PyDev, um die Tests zu starten und zeigen die Ergebnisse in der PyUnit-Ansicht.

Wenn Sie den Komponententest ausführen, müssen Sie den Test-Runner überschreiben, um "nose" und Befehlszeilenargumente "--with-pylons = path/to/test.ini" im Tab "Argumente" des Laufs zu verwenden Aufbau. Zum Beispiel setze ich es auf "- mit-Pylonen = ../../test.ini". Leider muss ich das für jeden Test separat einrichten, ich habe keine Möglichkeit gefunden, einen Variablen- oder Projektpfad dorthin zu legen.

Auch, leider konnte ich keine Breakpoints arbeiten. Ich habe versucht, patchen, wie in http://pydev.blogspot.ca/2007/06/why-cant-pydev-debugger-work-with.html empfohlen und seine Kommentare vergebens. YMMV.

In DecoratorTools-1.8-py2.7.egg/peak/util/decorators.py in decorate_assignment() ersetzen:

oldtrace = [frame.f_trace] 

mit

oldtrace = [sys.gettrace()]