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
Trueist, wird die Ausführung ohne Meldung fortgesetzt.Wenn sie
Falseist, löst Python einenAssertionErroraus.
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.
Korrigiere die Funktion.
Ersetze die drei Diagnoseausgaben durch Zusicherungen für die Fragenanzahlen
2,3und4.Gib jeder Zusicherung eine hilfreiche Meldung.
Gib nach allen Zusicherungen
Checks passed.aus.
Die endgültige Ausgabe darf nur Folgendes enthalten:
Checks passed.