Kurs Python richtig lernen/Unit Testing: Unterschied zwischen den Versionen

Aus Geometa Lab OST
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 9: Zeile 9:
Um Nose kennenzulernen starten wir mit einem Beispiel. Speichern Sie den folgenden Unit test in einem File "test_42.py":
Um Nose kennenzulernen starten wir mit einem Beispiel. Speichern Sie den folgenden Unit test in einem File "test_42.py":


<code>
def test_life_the_universe_and_everything():
def test_life_the_universe_and_everything():
    assert 42 == 42
    assert 42 == 42
</code>


Führen Sie diesen Test wiefolgt aus:
Führen Sie diesen Test wiefolgt aus:


<code>
$ nosetests
$ nosetests
</code>


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''.
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''.
Zeile 24: Zeile 20:
Manchmal benötigen Sie für Ihre Unit Tests Fixtures. Diese können Sie wiefolgt definieren:
Manchmal benötigen Sie für Ihre Unit Tests Fixtures. Diese können Sie wiefolgt definieren:


<code>
def test_life_the_universe_and_everything():
def test_life_the_universe_and_everything():
    assert 42 != 42
    assert 42 == 42
test_life_the_universe_and_everything.setUp = lambda: print "setUp"
test_life_the_universe_and_everything.tearDown = lambda: print "tearDown"
</code>


Führen Sie dieses Beispiel aus und verifizieren Sie, dass die Ausgaben Ihren Erwartungen entsprechen.
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

Version vom 12. September 2012, 11:07 Uhr

Ü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.

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