Das schreiben von Tests sollte für jeden der programmiert dazugehören und ist wichtig um die Qualität des Codes bzw. der Software gewährleisten zu können. Hier bringt jede Programmiersprache eigene Tools mit. Da Ich viel mit Python entwickle verwende ich das PyTest Package.
Um PyTest zu installieren, kann einfach der folgende Befehl verwendet werden:
1 | pip install -U pytest |
Zum Testen lege ich mir eine Datei test_pytest.py an. In diese Datei legen wir als erstes eine Funktion zur Berechnung des Quadrates einer Zahl an.
1 2 | def square(number): return number * number |
Anschließend wird eine Test-Funktion erstellt.
1 2 3 4 5 6 | def test_square(): assert square(3) == 9 assert square(-2) == 4 assert square(2) != 5 assert square(0) == 0 assert square(1) == 1 |
Ich versuche innerhalb einer Testfunktion immer möglichst viele unterschiedliche Fälle abzufangen. Im Falle des Quadrates sind zumindest die ersten beiden Fälle wichtig.
Will man den Test ausführen, kann man einfach pytest im Terminal eingeben. PyTest ruft dann automatisch alle Dateien auf, die mit test_ beginnen. Das ganze sieht auf dem Terminal dann wie folgt aus:
1 2 3 4 5 6 7 8 9 10 | pytest ====================================================================================== test session starts ======================================================================================= platform darwin -- Python 3.8.5, pytest-6.2.1, py-1.9.0, pluggy-0.13.1 rootdir: /Users/Christian/development/Sandbox collected 1 item test_pytest.py . [100%] ======================================================================================= 1 passed in 0.01s ======================================================================================== (Sandbox) |
Um einmal zu zeigen, wie das ganze aussieht wenn die Tests nicht erfolgreich sind, ändere ich die Testfunktion damit diese einen Fehler beinhaltet.
1 2 3 4 5 6 | def test_square(): assert square(3) == 8 assert square(-2) == 4 assert square(2) != 5 assert square(0) == 0 assert square(1) == 1 |
Führt man das ganze jetzt aus, dann wird ein Fehler zurückgegeben.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | pytest ====================================================================================== test session starts ======================================================================================= platform darwin -- Python 3.8.5, pytest-6.2.1, py-1.9.0, pluggy-0.13.1 rootdir: /Users/Christian/development/Sandbox collected 1 item test_pytest.py F [100%] ============================================================================================ FAILURES ============================================================================================ __________________________________________________________________________________________ test_square ___________________________________________________________________________________________ def test_square(): > assert square(3) == 8 E assert 9 == 8 E + where 9 = square(3) test_pytest.py:9: AssertionError ==================================================================================== short test summary info ===================================================================================== FAILED test_pytest.py::test_square - assert 9 == 8 ======================================================================================= 1 failed in 0.03s ======================================================================================== (Sandbox) |
Hierbei handelt es sich jetzt nur um ein sehr einfaches Beispiel, aber nach diesem Prinzip lassen sich sowohl kleine wie auch große Projekte einfach und schnell mit Tests ausstatten.
Schreibe einen Kommentar