Guide complet pour générer des rapports de test professionnels avec FastAPI en CI/CD

Rapports de test FastAPI pour l'intégration et le déploiement continus

FastAPI, framework Python haute performance, nécessite une configuration rigoureuse pour assurer la qualité via des rapports de test automatisés. Ce guide détaille la mise en place de pipelines CI/CD efficaces avec des rapports détaillés.

Importance des rapports de test dans FastAPI

Les rapports de test automatisés peremttent de valider le comportement des API, de vérifier les modèles Pydantic, de tester l'injection de dépendances et de surveiller la couverture de code. Ils garantissent que chaque point d'accès fonctionnne comme prévu.

Configuration du framework de test

FastAPI utilise pytest comme outil principal. La configuration de la couverture de code peut être définie dans un fichier de projet :

[tool.coverage.run]
data_file = "covdata/.coverage"

[tool.coverage.report]
exclude_lines = [
    "no coverage pragma",
    "def __str__",
    "raise ValueError",
    "raise NotImplementedError"
]

Scripts d'exécution des tests

Des scripts personnalisés automatisent l'exécution des tests :

  • run_tests.sh : Exécute les tests avec parallélisme.
  • generate_coverage.sh : Crée un rapport de couverture texte.
  • coverage_html.sh : Génère un rapport HTML interactif.

Étapes de génération des rapports

1. Exécution des tests de base

Lancez tous les tests avec le script dédié :

bash run_tests.sh

Ce script configure l'environnement et exécute pytest en parallèle pour accélérer le processus.

2. Génération de rapports de couverture

Pour obtenir un rapport détaillé de couverture de code :

bash generate_coverage.sh

Ou pour un rapport HTML plus visuel :

bash coverage_html.sh

3. Indicateurs clés des rapports

Les rapports FastAPI se concentrent sur :

  • Tests des points d'accès API
  • Validation des données avec Pydantic
  • Dépendances et middleware
  • Fonctionnalités WebSocket pour le temps réel

Structure des répertoires de test

Les tests sont organisés de manière modulaire :

test_suites/
├── api_endpoints/        # Tests des routes
├── data_models/          # Validation des schémas
├── dependencies/         # Injection de dépendances
└── integration/          # Tests complets

Chaque fichier cible un module spécifique, par exemple test_app.py pour les fonctionnalités principales.

Techniques avancées de test

Gestion des événements de cycle de vie

FastAPI supporte le test des événements startup et shutdown via des fixtures pytest.

Tests asynchrones

Utilisez pytest-asyncio pour tester les endpoints asynchrones avec une couverture complète.

Simulation des dépendances

Remplacez les dépendances dans les tests pour simuler différents scénarios et conditions limites.

Intégration CI/CD optimale

Configuration avec GitHub Actions

Voici un exemple de workflow pour automatiser les tests :

name: FastAPI Test Pipeline
on: [push, pull_request]
jobs:
  testing:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - run: pip install -e ".[dev]"
      - run: bash generate_coverage.sh

Visualisation des rapports

Intégrez les rapports de couverture dans vos pipelines pour :

  • Afficher les variations de couverture dans les requêtes de fusion.
  • Définir des seuils minimaux (par exemple 85%).
  • Générer des graphiques de tendacne.
  • Annoter automatiquement les échecs de test.

Résolution des problèmes courants

Tests lents ?

Activez l'exécution parallèle avec pytest-xdist :

pytest -n auto test_suites/

Rapport de couverture inexact ?

Excluez les fichiers de test et les environnements virtuels :

[tool.coverage.run]
omit = [
    "*/test_suites/*",
    "*/venv/*",
    "*/.venv/*"
]

Données de test contaminées ?

Utilisez les fixtures de pytest pour isoler les données et garantir l'indépendance des tests.

Étiquettes: FastAPI pytest CI/CD GitHub Actions rapports de test

Publié le 9 juin à 07h42