- 1 Abschnitt
- 9 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
Grundlagen der Modultests
Komponenten eines Modultests
Ein Modultest besteht aus mehreren grundlegenden Komponenten, die zusammenarbeiten, um die Funktionalität eines kleinen, isolierten Teils einer Software zu überprüfen.
1. Testfälle und Testmethoden:
Ein Testfall ist eine einzelne Situation oder ein Szenario, das getestet wird. Eine Testmethode ist die Implementierung dieses Testfalls als Funktion oder Methode im Testcode.
Beispiel:
def test_add_positive_numbers():
assert add(2, 3) == 5
2. Testdaten und Teststubs:
Testdaten sind die spezifischen Eingaben, die in einem Test verwendet werden. Teststubs sind einfache Implementierungen von Funktionen oder Methoden, die Abhängigkeiten simulieren, um die getestete Einheit isoliert zu halten.
Beispiel:
# Testdaten: Die Werte 2 und 3 werden als Eingaben für die Funktion 'add' verwendet
def test_add_positive_numbers():
assert add(2, 3) == 5
# Teststub: Eine einfache Funktion, die eine abhängige Methode simuliert
def get_user_data_stub(user_id):
return {'id': user_id, 'name': 'Test User'}
3. Assertions und Erwartungswerte:
Assertions sind Überprüfungen, die sicherstellen, dass das Ergebnis eines Tests dem erwarteten Wert entspricht. Wenn die Assertion fehlschlägt, wird der Test als fehlgeschlagen markiert.
Beispiel:
def test_add():
result = add(2, 3)
expected = 5
assert result == expected, f"Expected {expected}, but got {result}"
Best Practices
1. Schreiben von klaren und präzisen Testfällen:
Jeder Testfall sollte einen spezifischen Aspekt der Funktionalität überprüfen und klar benennen, was er testet.
Beispiel:
def test_add_with_positive_numbers():
assert add(2, 3) == 5
2. Verwendung von aussagekräftigen Testdaten:
Testdaten sollten realistische und relevante Werte verwenden, um sicherzustellen, dass die Tests die tatsächliche Nutzung der Software widerspiegeln.
Beispiel:
def test_add_with_negative_numbers():
assert add(-1, -1) == -2
3. Strukturierung und Organisation von Testcode:
Tests sollten logisch gruppiert und gut organisiert sein, um die Wartung und Erweiterung zu erleichtern.
Beispiel:
class TestAddFunction:
def test_add_positive_numbers(self):
assert add(2, 3) == 5
def test_add_negative_numbers(self):
assert add(-1, -1) == -2
def test_add_zero(self):
assert add(0, 0) == 0
Beispiel: Modultests für eine einfache Funktion
Code:
# Definition der Funktion 'add', die zwei Zahlen addiert und das Ergebnis zurückgibt
def add(a, b):
return a + b
Modultests:
import pytest
# Definition der Testklasse 'TestAddFunction' mit verschiedenen Testmethoden
class TestAddFunction:
# Testmethode für die Addition von positiven Zahlen
def test_add_positive_numbers(self):
assert add(2, 3) == 5
# Testmethode für die Addition von negativen Zahlen
def test_add_negative_numbers(self):
assert add(-1, -1) == -2
# Testmethode für die Addition von Nullen
def test_add_zero(self):
assert add(0, 0) == 0
# Hauptblock, der pytest startet, wenn das Skript direkt ausgeführt wird
if __name__ == "__main__":
pytest.main()
