Kurs Python richtig lernen/Unit Testing

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche

Übung "Unit Testing mit Python und Nose"

In dieser Übung lernen Sie Unit Testing mit dem Python Test Runner Nose.

Geschätzter Zeitaufwand für diese Übung: ca. 2h.

Einstieg

Um Nose kennenzulernen starten wir mit einem Beispiel. Speichern Sie den folgenden Unit test in einem File "test_42.py":

def test_life_the_universe_and_everything():
    assert 42 == 42

Führen Sie diesen Test wiefolgt aus:

$ nosetests

Als Output bekommen Sie eine kleine Statistik inkl. dem Fehlerstatus (OK/NOK). Möchten Sie detailliertere Infors (welche Tests durchgeführt wurden), dann verwenden Sie die Option -v (verbose).

Manchmal benötigen Sie für Ihre Unit Tests Fixtures. Diese können Sie wiefolgt definieren:

def test_life_the_universe_and_everything():
    assert 42 != 42
def setUp(): 
    print "Setup"
def tearDown(): 
    print "tearDown"
test_life_the_universe_and_everything.setUp = setUp
test_life_the_universe_and_everything.tearDown = tearDown

Führen Sie dieses Beispiel aus und verifizieren Sie, dass die Ausgaben Ihren Erwartungen entsprechen (setup, failing test, teardown).

Nose erlaubt es Ihnen - neben Testfunktionen - Ihre Tests auch innerhalb einer Klasse zu schreiben (gemäss xUnit). Das gleiche Beispiel wie vorhin:

class Test42:
    def setUp(self): 
        print "Setup"
    def tearDown(self):
        print "tearDown"
    def test_life_the_universe_and_everything(self):
        assert 42 != 42

Tip: Wundern Sie sich nicht, wenn Sie Ausgaben in Ihren Unit Tests mit print nicht auf Ihrer Konsole sehen. Nose fängt alle Ausgaben auf stdout auf und zeigt diese nur bei fehlgeschlagenen Tests an. Dieses Verhalten kann mit der Option -s unterbunden werden.

((?:^|[b_.-])[Tt]est)