Lektion 20 von 35Python
Python · Lektion 20 · 25 Minuten
Eigene Tests mit assert
Das lernst du
- Mit
assertprüfen, ob Code richtig rechnet - Grenzfälle finden und testen
- Testfunktionen schreiben wie die Profis
Warum testen?
Je größer ein Programm wird, desto leichter schleicht sich ein Fehler ein – oft an einer Stelle, die du gar nicht geändert hast. Tests prüfen automatisch, ob dein Code noch richtig rechnet. Genau so funktioniert übrigens auch der „Prüfen“-Knopf auf Codelix!
assert
assert bedeutet „ich behaupte“. Stimmt die Behauptung, passiert nichts. Stimmt sie nicht, stoppt das Programm mit einem AssertionError:
def verdoppeln(x):
return x * 2
assert verdoppeln(3) == 6
assert verdoppeln(0) == 0
assert verdoppeln(-2) == -4
print("Alles richtig!")Ändere x * 2 in x + 2 und führe es nochmal aus. Welcher Test schlägt zuerst Alarm?
Mit Nachricht
Hinter einem Komma kannst du erklären, was schiefging:
def note(punkte):
if punkte >= 90:
return 1
if punkte >= 75:
return 2
return 3
assert note(95) == 1, "95 Punkte sollten eine 1 sein"
assert note(75) == 2, "Genau 75 ist noch eine 2"
assert note(74) == 3, "74 ist schon eine 3"
print("Notenrechner passt!")Grenzfälle
Die meisten Fehler stecken an den Rändern: bei 0, bei leeren Listen, genau an einer Grenze wie 75 Punkte. Gute Tests prüfen nicht nur „normale“ Werte, sondern gerade diese Sonderfälle.
Profi-Tipp: Große Projekte benutzen
pytest. Dort schreibst du Funktionen, die mittest_anfangen – genau wie in der Aufgabe – und pytest findet und startet sie automatisch.
Kurz-Check
Bevor es an die Aufgabe geht: Was gibt dieses Programm aus? Tipp deine Vermutung ein – Python rechnet danach nach.
def doppelt(x):
return x * 2
assert doppelt(3) == 6
print("Test 1 ok")
assert doppelt(0) == 0
print("Test 2 ok")Deine Aufgabe
Jetzt bist du dran
Die Funktion ist_schaltjahr(jahr) ist schon fertig. Schreib eine Funktion test_schaltjahr(), die sie mit mindestens vier assert-Zeilen prüft – darunter die beiden Sonderfälle 1900 (kein Schaltjahr) und 2000 (Schaltjahr). Rufe die Testfunktion am Ende auf.
def ist_schaltjahr(jahr):
if jahr % 400 == 0:
return True
if jahr % 100 == 0:
return False
return jahr % 4 == 0
def test_schaltjahr():
# Deine assert-Zeilen
pass
test_schaltjahr()
print("Alle Tests bestanden!")- Denkanstoß
Schreib vier Zeilen der Form
assertist_schaltjahr(...)==True/Falsein die Testfunktion. - Welcher Befehl hilft?
Deine Tests merken nicht, wenn die 100er-Regel kaputt ist. Teste das Jahr 1900!
- Lückencode – ergänze die ___
def ist_schaltjahr(jahr): if jahr % 400 == 0: return True if jahr % 100 == 0: return False return jahr % 4 == 0 def test_schaltjahr(): ___ ___ ___ ___ test_schaltjahr() print("Alle Tests bestanden!")
Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.
Lösung anzeigen🔒 Erst nach allen Hinweisen oder 2 Prüf-Versuchen
Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:
def ist_schaltjahr(jahr):
if jahr % 400 == 0:
return True
if jahr % 100 == 0:
return False
return jahr % 4 == 0
def test_schaltjahr():
assert ist_schaltjahr(2024) == True
assert ist_schaltjahr(2023) == False
assert ist_schaltjahr(1900) == False
assert ist_schaltjahr(2000) == True
test_schaltjahr()
print("Alle Tests bestanden!")