1.6 KiB
Finalizing
Rückblick Task 18: Testing
In der Musterlösung wurde zusätzlich ein pyproject.toml-File eingefügt. Dieses erlaubt es euch u.a. die erstellten Tests
direkt aus der Konsole im Root-Verzeichnis mit pytest tests auszuführen.
Zusätzlich findet ihr eine .env.example-Datei. Diese ist selbst nicht funktional und soll dem User anzeigen, was die
funktionale .env für eine Struktur hat. So weiss in unserem Falle jeder, er/sie muss eine .env mit DB_CONNECTION_STRING
anlegen.
Im Testing (test_overpass.py) wurde lediglich ein einziger Unittest und Demonstration für stub, mock und fake gemacht.
In der Realität wäre das zu wenig, für Demonstrationszwecke sollte es genügen ...
Stärken
- Schichtenarchitektur ist (hoffentlich) klar: fetcher → pipeline → storage, keine zirkulären Abhängigkeiten
- Fehlerbehandlung konsistent mit eigenen Exception-Typen
- Konfiguration sauber von Code getrennt
- Threading von API-Requests (concurrent)
Schwächen/Entwicklungspotenzial
-
Keine Retry-Logik für Overpass: Die API ist öffentlich und manchmal überlastet. Eine einfache Retry-Logik mit tenacity wäre produktionsreif.
-
ROOT-Konstante ist fragil. Drei .parent-Aufrufe funktionieren nur bei genau dieser Verzeichnistiefe. Wir haben nun am Schluss noch ein
pyproject.tomlgebildet und könnten deshalb das ROOT daraus extrahieren.def find_root() -> Path: for parent in Path(__file__).parents: if (parent / "pyproject.toml").exists(): return parent raise RuntimeError("Projektroot nicht gefunden") -
...