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