Files
dockezr/README_TP4.md
T
2025-10-14 13:00:02 +04:00

4.0 KiB

🧪 TP4 - Tests automatisés avec Docker

📋 Objectif

Automatiser les tests de l'application dans la CI avec Docker.

Consignes réalisées

1. Fichier test_api.py créé

  • Pytest configuré pour tester l'API
  • Tests pour vérifier que les endpoints retournent status_code == 200
  • Tests complets pour tous les endpoints de l'API

2. Workflow GitHub Actions ajouté

  • Pipeline automatisé dans .github/workflows/test.yml
  • Tests exécutés avec Docker Compose
  • Intégration continue configurée

3. Simulation d'erreur et correction

  • Test simulé créé pour valider la détection automatique
  • Erreur détectée par la CI (pipeline rouge)
  • Test corrigé pour obtenir un pipeline vert

🏗️ Architecture des tests

dockezr/
├── .github/workflows/test.yml     # Pipeline CI/CD
├── backend/
│   ├── test_api.py               # Tests Pytest
│   ├── requirements-test.txt     # Dépendances tests
│   └── Dockerfile.test           # Image Docker pour tests
├── docker-compose.yml            # Configuration avec service test
├── test.sh                       # Script de test (Linux/Mac)
└── test.bat                      # Script de test (Windows)

🧪 Tests implémentés

Test Description Status
test_health_endpoint Vérifie /health retourne 200
test_rooms_endpoint Vérifie /rooms retourne 200
test_reservations_endpoint Vérifie /reservations retourne 200
test_root_endpoint Vérifie / retourne 200
test_room_by_id Test récupération salle par ID
test_room_not_found Test ID inexistant (404)
test_reservations_by_date Test réservations par date
test_simulated_error Test simulé (corrigé)
test_api_response_time Test performance API

🚀 Commandes pour lancer les tests

Tests locaux avec Docker

# Démarrer les services
docker-compose up -d db backend

# Lancer les tests
docker-compose --profile test up --build --abort-on-container-exit test

# Ou utiliser le script
./test.sh        # Linux/Mac
test.bat         # Windows

Tests avec couverture

docker-compose run --rm test pytest test_api.py --cov=. --cov-report=html

📊 Résultats des tests

============================= test session starts ==============================
platform linux -- Python 3.11.14, pytest-7.4.3, pluggy-1.6.0
collected 9 items

test_api.py::TestAPI::test_health_endpoint PASSED                        [ 11%]
test_api.py::TestAPI::test_rooms_endpoint PASSED                         [ 22%]
test_api.py::TestAPI::test_reservations_endpoint PASSED                  [ 33%]
test_api.py::TestAPI::test_root_endpoint PASSED                          [ 44%]
test_api.py::TestAPI::test_room_by_id PASSED                             [ 55%]
test_api.py::TestAPI::test_room_not_found PASSED                         [ 66%]
test_api.py::TestAPI::test_reservations_by_date PASSED                   [ 77%]
test_api.py::test_simulated_error PASSED                                 [ 88%]
test_api.py::test_api_response_time PASSED                               [100%]

============================== 9 passed in 0.06s ===============================

🎯 Livrables

  • Fichier test_api.py - Tests Pytest complets
  • Pipeline "vert" - Tous les tests passent
  • Workflow GitHub Actions - CI/CD automatisée
  • Configuration Docker - Tests intégrés dans Docker

🔧 Configuration technique

Variables d'environnement

  • API_BASE_URL: URL de l'API (défaut: http://localhost:8000)
  • DATABASE_URL: URL de la base de données PostgreSQL

Dépendances de test

  • pytest==7.4.3 - Framework de test
  • requests==2.31.0 - Client HTTP
  • pytest-cov==4.1.0 - Couverture de code
  • pytest-timeout==2.1.0 - Timeout des tests

🎉 TP4 terminé avec succès !

Le système de tests automatisés est maintenant opérationnel et prêt pour la production.