//SOLVEME_

Outils développeur / Testing · 2022

pycamel

Un framework basé sur pytest pour l'automatisation des tests API

Publié: · Mis à jour:

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