c't 2/2020
S. 146
Wissen
Testen mit Django
Aufmacherbild
Bild: Albert Hulm

Test that Jazz

Django-Datenbankanwendungen wonnevoll testen

Automatische Tests sollten immer unter den gleichen Voraussetzungen laufen. Datenbanken dienen aber dazu, zu speichern ohne zu vergessen – jede SQL-Anweisung im Test einer Datenbankanwendung verändert also den Status für andere Tests. Irgendwie müssen diese widerstrebenden Prinzipien zusammenfinden. Django löst das scheinbare Dilemma mit begnadeter Eleganz.

Ein neuer TestCase prüfte, ob die Anwendung Daten korrekt in der Datenbank gespeichert hatte. Nach ein paar Durchläufen passte die Testdatenbank nicht mehr auf die SSD, weil keiner der Tests die Daten wieder löschte. Eine Lösung bestand aus einem Winkelzug in Form eines Pseudo-Tests, der alle Datensätze eines Typs entfernte. Kurz darauf fluchte ein Kollege, dass seine Testdaten verschwunden seien.

Diese Szene spielte sich vor Jahren mal bei einem Projekt ab, bei dem alle Entwickler mit einer einzigen Test-Datenbank arbeiteten. Sie veranschaulicht, warum eine Datenbank für alle, besonders zusammen mit automatischen Tests, eine dumme Idee ist.