Hypothesis: Python-Code testen mit automatischen Beispielen
Das Test-Framework Hypothesis erzeugt automatisch hunderte Beispiele für Integrations- und Unittests. Das spart duplizierten Code und hilft Fehler zu finden.
(Bild: Albert Hulm)
Wer Unittests schreibt, muss kreativ sein: Jeder Test muss nämlich ein Beispiel mit möglichen Eingaben und der dazu passenden Ausgabe der getesteten Funktion definieren. Wie einfach das mit Pythons unittest geht, haben wir in "Python: Module automatisch testen" beschrieben. Normalerweise erfinden die Tester diese Beispiele und kodieren sie in Handarbeit in die Tests.
Dabei ist es eine Kunst, die richtigen Beispiele zu finden, die alle Randfälle und Ausnahmen abdecken. Mutation-Tests helfen zwar, ungenügende Tests zu identifizieren, der Fix besteht aber zumeist aus weiteren Tests mit mehr Beispielen, was den Test-Code schnell wachsen lässt.
Mit dem Python-Framework Hypothesis umgeht man elegant die Test-Code-Adipositas, indem man das Erzeugen von Beispielen an den Rechner delegiert. Der erschafft flugs hundert Beispiele statt nur eines und merkt sich brav, falls eines der zufälligen Beispiele fehlschlägt. Damit das funktioniert, muss man Hypothesis lediglich per Decorator mitteilen, aus welcher Menge es die Beispiele aussuchen darf. Als ganz normale Parameter der Test-Funktion fließen sie ohne Staustufen in den Programmfluss.
Das war die Leseprobe unseres heise-Plus-Artikels "Hypothesis: Python-Code testen mit automatischen Beispielen". Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.