Zum Beispiel, ich habe ein Stück Code, der eine SQL * Loader-Steuerdatei aus dieser Vorlage (mit Python) ist zu erzeugen:Wie testen Sie den Vorlagencode?
template = """
LOAD DATA
INFILE '%(file_path)s'
APPEND
INTO TABLE %(table_name)s
FIELDS TERMINATED BY "%(delimiter)"
OPTIONALLY ENCLOSED BY ""
(\n%(column_specifications)s\n)
"""
Es gibt nur zwei Möglichkeiten, die ich von zu Unit-Test denken kann dies:
- Kommen Sie mit Eingaben, herauszufinden, wie die Ausgabe aussehen soll, dann behaupten, dass die Ausgabe gleich ist.
- Testen Sie, dass bestimmte Zeichenfolgen, die in der Datei enthalten sein sollten, in der Datei enthalten sind.
Für mich stellen diese Tests zwei verschiedene Extreme dar. Die erste Technik scheint sehr fragil zu sein, da ich den Test aktualisieren muss, wenn ich nur den Leerraum ändere. Die zweite Technik scheint fast nutzlos, weil sie nicht wirklich testet, dass Text am richtigen Ort ist. Gibt es hier eine Art fröhliches Medium, das meine Tests einfach hält?
Das wäre jedoch kein Unit-Test. :-) –
Es wäre kein schneller Komponententest, aber wenn Sie Code schreiben, der Bilder, Dateien usw. generiert, neigen die Tests dazu, sich dem Ansatz der "Goldenen Datei"/Referenzdatei zu nähern. Wie wäre es mit der Ausgabe der String/Datei-Inhalte gegen ein Kommandozeilen-Diff-Tool, das Whitespace ignoriert – Gishu