//SOLVEME_

Entwicklertools / Testing · 2022

pycamel

Ein pytest-basiertes Framework für automatisierte API-Tests

Veröffentlicht: · Aktualisiert:

PythonpytestAPI Testing
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