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

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche
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, 13: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