Integrationstests¶
Integrationstests prüfen das Zusammenspiel mehrerer Bausteine mit echten externen Abhängigkeiten — vor allem den Datenzugriff gegen eine laufende ArangoDB und das Verhalten der API-Schicht. Sie sitzen in der Mitte der Testpyramide: weniger als Unit-Tests, dafür realistischer.
Was diese Stufe prüft¶
- Repository- und Datenbank-Zugriff: dass Queries, Indizes und der Graph (
kamerplanter_graph) gegen eine echte ArangoDB-Instanz wie erwartet arbeiten. - API-Schicht: Fehlerbehandlung und Statuscodes der FastAPI-Endpunkte.
Getestete Bereiche im Überblick¶
| Bereich | Getestete Elemente | Umfang |
|---|---|---|
| API-Schicht (Router) | REST-Endpunkte je Domäne — Dashboard, Nährlösung, Wetter, Datenschutz, Erkennung, Mandanten, Standorte u. v. m. | umfangreich |
| Datenbank-Integration | ArangoDB-Setup, Graph, mehrjähriger Saison-Zyklus | fokussiert |
| Tenant-Isolation | Vermehrung/Lineage über Mandantengrenzen | fokussiert |
Werkzeug & Ort¶
| Wert | |
|---|---|
| Werkzeug | pytest |
| Ort | src/backend/tests/integration/, src/backend/tests/api/ |
| Abhängigkeit | laufende ArangoDB-Instanz |
Ausführen¶
Diese Stufe braucht eine Datenbank, und das Fehlen einer solchen wird nicht weggeschwiegen: In CI scheitert der Lauf mit der versuchten Verbindungsadresse, lokal wird mit demselben Grund übersprungen — und weil das Target den Skip-Floor --max-skipped 0 deklariert, ist auch dieser Skip rot.
# ArangoDB starten (Dev-Stack oder ein Wegwerf-Container)
task dev:core
# oder:
docker run -d --rm --name kp-it-arango -p 8529:8529 \
-e ARANGO_ROOT_PASSWORD=rootpassword arangodb:3.12
# Nur Integrationstests — dieselbe Invocation wie in CI
task test:backend:integration
Details im Testkonzept → Integrationstests.
Konventionen¶
- Integrationstests dürfen den Zustand der Testdatenbank verändern — sie räumen nach sich auf oder nutzen isolierte Collections.
- In CI laufen sie gegen einen ArangoDB-Service-Container; ohne Datenbank scheitert der Lauf dort bewusst, statt grün zu melden.
- Die Verbindung wird einmal zentral geprüft (
tests/integration/conftest.py, Session-Fixturearango_db); ein Modul hängt sich mitpytestmark = pytest.mark.usefixtures("arango_db")daran und bringt keine eigene Probe mit. - Die Adresse steht in keinem Modul fest:
ARANGODB_HOST/ARANGODB_PORT/ARANGODB_USERNAME/ARANGODB_PASSWORDzeigen die Stufe auf einen beliebigen Server.