Backend & APIs testen
So weist du den Agent an, Endpunkte, Datenbank-Logik und externe Integrationen zu testen.
Backend-Tests in Airbuild laufen typischerweise als pytest im Workspace-Container. Der Agent legt eine tests/ Struktur an, falls noch nicht vorhanden, und kann Unit-, Integration- und Smoke-Tests schreiben.
Endpoint-Tests
Alle Endpunkte gleichzeitig testen:
Teste mir alle FastAPI-Endpoints. Für jeden: 200, 400, 401, 404 wo zutreffend. Schreib das in tests/test_endpoints.py und lass es laufen.Was passiert: Der Agent liest deine Routen aus main.py, generiert pro Route Test-Cases mit gültigem JWT, ungültigem Payload, fehlendem Auth-Header — und führt sie via pytest -v aus.
Pro Endpoint detailliert:
Schreib einen Test für POST /api/projects — er muss prüfen dass:
1. Ein eingeloggter User ein Projekt anlegen kann
2. Plan-Limit-Verletzung 402 zurückgibt
3. Ein ungültiger Projekttyp 400 zurückgibtDatenbank-Tests
Migration testen:
Teste die V012-Migration. Roll sie an, leg ein paar Datensätze an, prüf dass alle Felder korrekt persistieren. Roll dann zurück und prüf dass die Tabelle weg ist.
Constraint-Tests:
Schreib einen Test der prüft, dass status nur 'pending', 'approved' oder 'rejected' sein kann. Andere Werte müssen einen IntegrityError werfen.
Mock vs. Real-DB
Per Default nutzt der Agent eine echte lokale Postgres für Backend-Tests. Ein Integrationstest gegen eine gemockte Datenbank beweist, dass der Mock funktioniert — nicht, dass dein Schema, deine Constraints und deine Migrationen es tun.
Wenn du explizit Mocks willst:
Mock die DB-Calls für diesen Test — ich will isoliert nur die Service-Logik prüfen, nicht die Persistenz.
Externe APIs (Stripe, Brevo, GitHub)
Diese werden immer gemockt, niemals real aufgerufen während Tests:
Teste den Stripe-Webhook-Handler. Mock einenpayment_intent.succeeded-Event, prüf dass die Subscription aufactivegesetzt wird, Idempotency-Test mit doppelter Event-ID.
Property-Based Testing
Für komplexe Invarianten kann der Agent hypothesis nutzen:
Verwende hypothesis um zu prüfen, dass der Slug-Generator IMMER URL-safe ist, egal welcher Input kommt. Probier auch Unicode, Emojis, sehr lange Strings.
Integration-Tests mit Containern
Für Tests die einen echten Postgres + Redis brauchen:
Schreib einen Integration-Test der einen User anlegt, ein Projekt erstellt, es published, und prüft dass alle 6 Cleanup-Schritte funktionieren wenn er es wieder löscht.
Coverage & CI
Lass pytest --cov=services --cov-report=html laufen und sag mir wo wir unter 80% Coverage sind.Der Agent kann auch eine GitHub-Actions-Workflow-Datei generieren:
Schreib einen .github/workflows/test.yml, der bei jedem PR die Backend-Tests ausführt — Postgres als Service-Container.