Entwicklertools / Testing · 2022
pycamel
Ein pytest-basiertes Framework für automatisierte API-Tests
Veröffentlicht: · Aktualisiert:
- Rolle
- Solo-Entwicklung des Test-Automatisierungs-Frameworks
- Stack
- Python, pytest, Pylint, Coverage, codecov
- Jahr
- 2022
pycamel ist ein Automatisierungs-Framework, das sich auf die Testabdeckung von API-Diensten konzentriert und sich nahtlos in pytest integriert. Es gibt Teams eine strukturierte Möglichkeit, API-Tests zu schreiben — besonders nützlich für Microservice-Architekturen.
Die Aufgabe
Arbeitet ein Team gleichzeitig an mehreren Diensten und API-Versionen, werden verstreute Ad-hoc-pytest-Skripte schnell unübersichtlich, ohne gemeinsame Struktur oder wiederverwendbare Bausteine.
Die Lösung
- ▸CamelConfig — Konfiguration mit einer Basis-URL des Dienstes
- ▸RouterMaker — Aufbau von Routen für verschiedene API-Endpunkte
- ▸Parametrisiertes Testen über pytest.mark.parametrize
- ▸Hilfsfunktionen zur Antwortvalidierung, u. a. assert_status_code
- ▸Unterstützung für Request-Filter und einfache Erweiterung für Multi-Service-Architekturen
So funktioniert es
Ein Projekt legt den Basis-Host einmal mit CamelConfig in tests/conftest.py fest. Jeder Service bekommt dann einen eigenen RouterMaker mit einem Pfadpräfix wie /data-service/v1, und jeder Endpoint wird zu einem wiederverwendbaren Router, der als pytest-Fixture bereitsteht. Tests rufen router.get() oder post() auf und prüfen die Antwort — der Testcode spiegelt so die Struktur der API wider.
- ▸Standard-Header pro Router (von Haus aus Content-Type: application/json) sowie set_headers und append_header, die nur für die nächste Anfrage gelten
- ▸Query-Parameter und Filter über set_filters() für Paginierung und Suche
- ▸Validierung von Antworten gegen pydantic-v2-Schemas
- ▸Eigene Router-Maker pro API-Version (v1, v2) für Services, die sich parallel weiterentwickeln
Pflege
pycamel ist seit 2022 auf PyPI verfügbar und wird weiterhin gepflegt: Die aktuelle Hauptversion setzt Python 3.10+ und pydantic v2 voraus, Unit-Tests laufen auf GitHub Actions, und die Coverage wird auf Codecov verfolgt.
Das Ergebnis
Das Framework ist auf Codequalität ausgelegt: Pylint für die statische Analyse sowie Coverage und codecov zur Überwachung der Testabdeckung.
Erwähnungen & Quellen