4.0 KiB
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 testrequests==2.31.0- Client HTTPpytest-cov==4.1.0- Couverture de codepytest-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.