Tests mit pytest
Tests sagen dir sofort, ob eine Änderung etwas Altes kaputt macht. pytest macht das in Python besonders knapp.
Ansicht
01
Verstehen
Lies die Kernidee und das Beispiel.
02
Prüfen
Beantworte die Aktiv-Checks.
03
Anwenden
Setze die Transferaufgabe um.
Lerninhalt
Verstehen & anwenden
Der erste Test
pytest findet Dateien, die mit test_ beginnen, und Funktionen, die mit test_ beginnen.
Ein Test besteht oft aus Arrange, Act und Assert: vorbereiten, ausführen, mit assert prüfen.
# noten.py
def durchschnitt(werte):
return sum(werte) / len(werte)
# test_noten.py
from noten import durchschnitt
def test_durchschnitt():
assert durchschnitt([1, 2, 3]) == 2Grenzfälle und parametrize
Gute Tests prüfen nicht nur den Normalfall, sondern auch leere Listen, einzelne Werte und ungültige Eingaben.
@pytest.mark.parametrize führt denselben Test mit mehreren Wertepaaren aus. Das hält Grenzfälle kompakt.
import pytest
from noten import beste
@pytest.mark.parametrize("werte, erwartet", [
([1, 2, 3], 1),
([4], 4),
])
def test_beste(werte, erwartet):
assert beste(werte) == erwartetFixtures und Struktur
Eine Fixture bereitet Daten oder Ressourcen für mehrere Tests vor.
pytest injiziert sie über den Parameter.
Fixtures gehören oft in conftest.py. Tests sollen unabhängig sein und nicht auf der Reihenfolge anderer Tests beruhen.
import pytest
@pytest.fixture
def konto():
return {"stand": 100}
def test_einzahlen(konto):
konto["stand"] += 50
assert konto["stand"] == 150Aktiv-Check
Teste dein Verständnis
Erkennen: Welcher Abschnitt passt?
Welcher Abschnitt passt zu diesen Begriffen?
Transfer
Mini-Projekt: Wortzähler mit Tests
Schreibe einen Wortzähler und sichere ihn mit pytest ab. Teste Normalfall, Großschreibung und leeren Text.
Selbstcheck
Kann ich das schon?
Hake ab, was du wirklich erklären oder selbst bauen könntest.
Fortschritt
Bereit zum Abschließen?
Markiere die Lektion als abgeschlossen, um XP und Streak zu erhalten.