Outils développeur / Testing · 2022
pycamel
Un framework basé sur pytest pour l'automatisation des tests API
Publié: · Mis à jour:
- Rôle
- Développement solo du framework d'automatisation de tests
- Stack
- Python, pytest, Pylint, Coverage, codecov
- Année
- 2022
pycamel est un framework d'automatisation axé sur la couverture des services API par des tests, s'intégrant parfaitement à pytest. Il offre aux équipes une façon structurée d'écrire des tests API, particulièrement utile pour les architectures microservices.
Le défi
Quand une équipe travaille sur plusieurs services et versions d'API à la fois, des scripts pytest ad hoc dispersés tournent vite au chaos, sans structure commune ni briques réutilisables.
La solution
- ▸CamelConfig — configuration avec une URL de base du service
- ▸RouterMaker — construction de routes pour différents endpoints API
- ▸Tests paramétrés via pytest.mark.parametrize
- ▸Fonctions d'aide à la validation des réponses, dont assert_status_code
- ▸Support des filtres de requête et extension facile pour les architectures multi-services
Fonctionnement
Un projet déclare une seule fois son hôte de base avec CamelConfig dans tests/conftest.py. Chaque service reçoit ensuite son propre RouterMaker avec un préfixe de chemin comme /data-service/v1, et chaque endpoint devient un routeur réutilisable exposé sous forme de fixture pytest. Les tests appellent router.get() ou post() et vérifient la réponse : le code de test reflète ainsi la structure de l'API.
- ▸En-têtes par défaut pour chaque routeur (Content-Type: application/json d'office), plus set_headers et append_header qui ne s'appliquent qu'à la requête suivante
- ▸Paramètres de requête et filtres via set_filters() pour la pagination et la recherche
- ▸Validation des réponses avec des schémas pydantic v2
- ▸Des router makers distincts par version d'API (v1, v2) pour les services qui évoluent en parallèle
Maintenance
pycamel est publié sur PyPI depuis 2022 et toujours maintenu : la version majeure actuelle cible Python 3.10+ et pydantic v2, les tests unitaires tournent sur GitHub Actions et la couverture est suivie sur Codecov.
Le résultat
Le framework est pensé pour la qualité du code : Pylint pour l'analyse statique, ainsi que Coverage et codecov pour suivre la couverture de tests.
Mentions et sources