0%

Programme planen, bauen und testen · Übung

Mache aus Beispielen Zusicherungen

Ein durchgearbeitetes Beispiel wird nützlicher, wenn das Programm es für dich prüfen kann. Eine Prüfung, ob ein Quizplan bereit ist, verlangt mindestens drei Fragen. Beginne also mit dieser Zusage:

Die Python-Anweisung assert drückt eine Erwartung aus:

def has_enough_questions(question_count):
    return question_count >= 3


assert has_enough_questions(3) is True

Python wertet die Bedingung nach assert aus.

  • Wenn sie True ist, wird die Ausführung ohne Meldung fortgesetzt.

  • Wenn sie False ist, löst Python einen AssertionError aus.

Stille ist hier nützlich. Betrachte eine Zusicherung als stillen Alarm: Sie macht sich nur bemerkbar, wenn eine Zusage verletzt wird.

Füge eine hilfreiche Meldung hinzu

Eine Zusicherung kann eine Meldung enthalten:

assert has_enough_questions(3) is True, "Exactly three questions should be enough."

Wenn die Prüfung fehlschlägt, erscheint die Meldung mit dem Traceback. Sie erklärt das beabsichtigte Verhalten, nicht die internen Abläufe des Tests.

Prüfe beide Seiten einer Entscheidung

Der Ausdruck „mindestens drei“ enthält eine wichtige Grenze. Prüfe direkt darunter, genau darauf und darüber:

assert has_enough_questions(2) is False
assert has_enough_questions(3) is True
assert has_enough_questions(4) is True

Zusammen unterscheiden diese Prüfungen >= 3 von dem leicht zu übersehenden > 3.

Verwende is True und is False, wenn der Vertrag ausdrücklich einen booleschen Wert zusagt. So unterscheidest du den booleschen Wert True von anderen Werten, die als wahr gelten, etwa 1.

Zusicherungen sind Prüfungen für die Entwicklung

Eine Zusicherung ist keine nutzerfreundliche Möglichkeit, echte Nutzereingaben zu validieren. Sie ist eine knappe Notiz beim Entwickeln an das Programm: „Dieses Verhalten muss weiterhin gelten.“

Verwende für Nutzereingaben die Techniken zur Validierung und Ausnahmebehandlung aus Kapitel 10.

Behalte Prüfungen nach dem Refactoring bei

Sobald eine Prüfung ein wichtiges Verhalten festhält, behalte sie bei, während du den Code umstrukturierst. Wenn sich das Verhalten versehentlich ändert, zeigt dir die fehlgeschlagene Zusicherung das sofort.

Was gibt dieses Programm aus?

def has_enough_questions(question_count):
    return question_count >= 3


assert has_enough_questions(3) is True
print("Check passed.")

Aufgabe

Eine Prüfung, ob ein Quizplan bereit ist, ist erfolgreich, wenn der Plan mindestens drei Fragen enthält.

Die vorgegebene Funktion behandelt die genaue Grenze falsch und gibt lediglich drei boolesche Ergebnisse aus.

  1. Korrigiere die Funktion.

  2. Ersetze die drei Diagnoseausgaben durch Zusicherungen für die Fragenanzahlen 2, 3 und 4.

  3. Gib jeder Zusicherung eine hilfreiche Meldung.

  4. Gib nach allen Zusicherungen Checks passed. aus.

Die endgültige Ausgabe darf nur Folgendes enthalten:

Checks passed.