Zum Inhalt

Tests und Dokumentation

Tests mit Abbildungen

Für Tests mit Abbildungen nutzen wir pytest-mpl, ein Plugin von Pytest von Matplotlib. Damit können automatisiert Bilder mit einer sogenannten "baseline" verglichen werden.

Wenn das Projekt bereits mittels Poetry installiert wurde (mit --with=dev), sollte das Plugin bereits zur Verfügung stehen.

Um eine neue Abbildung zu der bestehenden Baseline hinzuzufügen, muss folgender Befehl ausgeführt werden:

poetry run pytest --mpl-generate-path=tests/baseline tests/test_draw.py::test_draw_labels

Dies erzeugt eine neue Abbildung für die Funktion test_draw_labels in der Datei ./test/test_draw.py. Natürlich kann auch eine vollständiges Modul für die Baseline angegeben werden, indem das Suffix für die Methode weggelassen wird. Unveränderte Abbildungen werden nicht überschrieben.

Zum Debugging wird nach Abschluss der Tests (unabhängig vom Erfolg) ein Abschlussbericht in Form einer HTML-Datei erstellt. Diese stehen im Gitlab-Interface über Build - Pipelines - rechts unter dem Knopf "Artefakte herunterladen" zum Download als .zip zur Verfügung und können lokal eingesehen werden.

Sollen derlei Reports lokal erstellt werden, ist das über folgenden Befehl möglich:

poetry run pytest --mpl --mpl-results-path=results --mpl-generate-summary=basic-html

Damit werden alle Tests durchlaufen und der Bericht im Unterordner ./results/ im Repo abgelegt. Darin die HTML-Datei einfach im Browser öffnen.

Dokumentation editieren

Wenn die Dokumentation geändert werden soll, so muss dafür mkdocs installiert sein (Das sollte ohnehin der Fall sein, wenn die Gruppe dev über Poetry installiert wurde. Danach in der Kommandozeile im Repo einfach Folgendes eingeben:

mkdocs serve

Das sollte die Dokumentation erstellen und sie unter localhost:8000 bereitstellen. Normalerweise öffnet sich der Browser mit der Seite automatisch. Sollte das nicht der Fall sein, einfach http://127.0.0.1:8000 ansteuern. Die Seite hat einen automatischen Reload, Änderungen in den .md-Dateien sollten also sofort sichtbar sein.