Ein Projekt, das andere ausführen können · Übung
Ein gemeinsames Stammverzeichnis für Imports behalten
Halte die Projektstruktur einfach. api_catalog.py bleibt im Projektstamm, Tests bleiben in tests/test_api_catalog.py, und Befehle starten aus diesem Stammverzeichnis. Ergänze weder src/ noch Paketmetadaten, editierbare Installationen, Konsolenskripte oder Änderungen an sys.path: Das würde eine neue Lektion zur Paketierung schaffen und bestehende geprüfte Aufrufe beschädigen.
Erstelle tests/test_api_catalog.py. Verwende import api_catalog und teste dann über seine öffentlichen Funktionen. Baue kleine Fake-Antworten und Fake-Sessions in der Testdatei. Das Ersatzobjekt zeichnet URL und Schlüsselwortargumente auf, gibt von der Bewertung vorgegebene Daten zurück und öffnet nie einen Socket. Behalte einen Test mit tmp_path für Ausgabebytes und den Erhalt von Kontrollinhalt bei.
Führe Tests aus dem Stammverzeichnis aus:
python -m pytest -q
Wenn Python api_catalog nicht importieren kann, prüfe das aktuelle Verzeichnis und kehre in den Ordner zurück, der sowohl api_catalog.py als auch tests/ enthält. Repariere das Problem nicht mit einer Änderung des Suchpfads.
Was sollte ein Testmodul verwenden?
Aufgabe
Erstelle tests/test_api_catalog.py mit api_catalog als einzigem Projektimport sowie den benötigten Helfern aus der Standardbibliothek und pytest für Fake-Sessions, Antworten und tmp_path. Erhalte das Verhalten aus Kapitel 11 ohne echtes HTTP, Pfadmanipulation, Nebenwirkungen beim Import oder erzeugte Ausgaben im Projektstamm.