Unittest#

unittest unterstützt euch bei der Testautomatisierung mit gemeinsam genutztem Setup- und TearDown-Code sowie der Aggregation und Unabhängigkeit von Tests.

Hierfür liefert es die folgenden Testkonzepte:

Test Case (Testfall)#

testet eine einzelnes Szenario.

Test Fixture (Prüfvorrichtung)#

ist eine konsistente Testumgebung.

Test Suite#

ist eine Sammlung mehrerer Test Cases.

Test Runner#

durchläuft eine Test Suite und stellt die Ergebnisse dar.

Beispiel#

Angenommen, ihr habt im Modul test_arithmetic.py die folgende Methode zum Hinzufügen implementiert:

1def add(x, y):
2    """
3    >>> add(7,6)
4    13
5    """
6    return x + y

… dann könnt ihr diese Methode mit einem Unittest testen.

  1. Dazu müsst ihr zunächst euer Modul und das Unittest-Modul importieren:

    1import unittest
    2class TestArithmetic(unittest.TestCase):
    
  2. Anschließend könnt ihr eine Testmethode schreiben, die eure Additionsmethode veranschaulicht:

    6class TestArithmetic(unittest.TestCase):
    7    def test_addition(self):
    8        self.assertEqual(arithmetic.add(7, 6), 13)
    9
    
  3. Damit die Unittests auch in andere Module importiert werden können, solltet ihr die folgenden Zeilen hinzufügen:

    23if __name__ == "__main__":
    24    unittest.main()
    
  4. Schließlich können alle Tests in test_arithmetic.py ausgeführt werden:

    $ bin/python test_arithmetic.py
    ....
    ----------------------------------------------------------------------
    Ran 4 tests in 0.000s
    
    OK
    
    C:> python test_arithmetic.py
    ....
    ----------------------------------------------------------------------
    Ran 4 tests in 0.000s
    
    OK
    

    … oder etwas ausführlicher:

    $ python test_arithmetic.py -v
    test_addition (__main__.TestArithmetic) ... ok
    test_division (__main__.TestArithmetic) ... ok
    test_multiplication (__main__.TestArithmetic) ... ok
    test_subtraction (__main__.TestArithmetic) ... ok
    
    ----------------------------------------------------------------------
    Ran 4 tests in 0.000s
    
    OK
    
    C:> Scripts\python test_arithmetic.py -v
    test_addition (__main__.TestArithmetic) ... ok
    test_division (__main__.TestArithmetic) ... ok
    test_multiplication (__main__.TestArithmetic) ... ok
    test_subtraction (__main__.TestArithmetic) ... ok
    
    ----------------------------------------------------------------------
    Ran 4 tests in 0.000s
    
    OK