Add automated tests with GitHub Actions - TP4
This commit is contained in:
+112
@@ -0,0 +1,112 @@
|
||||
# 🧪 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
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
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.
|
||||
Reference in New Issue
Block a user