Zum Inhalt springen
BetaEN
Lektion 20 von 35Python

Python · Lektion 20 · 25 Minuten

Eigene Tests mit assert

Das lernst du

  • Mit assert prü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 mit test_ 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!")

Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.

Lösung anzeigen

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!")