Tbruand
commited on
Commit
·
b5cc534
1
Parent(s):
c34292b
docs(test): ajoute un README expliquant les tests et le hook pre-push
Browse files- tests/README.md +62 -0
tests/README.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
## ✅ Tests unitaires & couverture
|
| 2 |
+
|
| 3 |
+
Ce projet dispose de tests automatisés pour valider les principales fonctionnalités :
|
| 4 |
+
|
| 5 |
+
### 📂 Fichiers de test
|
| 6 |
+
|
| 7 |
+
| Fichier | Description |
|
| 8 |
+
| ------------------------- | --------------------------------------------------------------------------------------------------------------------- |
|
| 9 |
+
| `tests/test_handler.py` | Vérifie le bon fonctionnement de la fonction `predict()` en mode `zero-shot` et `few-shot`. |
|
| 10 |
+
| `tests/test_interface.py` | Teste l'interface Gradio, les comportements inattendus (entrée vide, modèle invalide), et la création de l'interface. |
|
| 11 |
+
|
| 12 |
+
---
|
| 13 |
+
|
| 14 |
+
### 🧪 Lancer les tests
|
| 15 |
+
|
| 16 |
+
```bash
|
| 17 |
+
python -m pytest --cov=app --cov-report=term-missing
|
| 18 |
+
```
|
| 19 |
+
|
| 20 |
+
Ce qui génère un rapport de couverture avec les lignes non couvertes :
|
| 21 |
+
|
| 22 |
+
```
|
| 23 |
+
Name Stmts Miss Cover Missing
|
| 24 |
+
------------------------------------------------
|
| 25 |
+
app/handler.py 16 0 100%
|
| 26 |
+
app/interface.py 7 2 71% 17-18
|
| 27 |
+
------------------------------------------------
|
| 28 |
+
TOTAL 23 2 91%
|
| 29 |
+
```
|
| 30 |
+
|
| 31 |
+
> 🌟 Les lignes 17-18 non couvertes correspondent à l’exécution directe de l’interface dans le fichier `main.py`.
|
| 32 |
+
> Ces lignes ne sont volontairement **pas testées** car elles concernent le lancement interactif de l'application (`iface.launch()`), hors du périmètre des tests unitaires.
|
| 33 |
+
|
| 34 |
+
---
|
| 35 |
+
|
| 36 |
+
### 🚫 Hook `pre-push` automatique
|
| 37 |
+
|
| 38 |
+
Pour garantir la stabilité du dépôt, un **hook Git `pre-push`** a été mis en place.
|
| 39 |
+
|
| 40 |
+
🧹 Il exécute automatiquement les tests avant chaque `git push`.
|
| 41 |
+
|
| 42 |
+
#### Exemple `.git/hooks/pre-push`
|
| 43 |
+
|
| 44 |
+
```bash
|
| 45 |
+
#!/bin/sh
|
| 46 |
+
echo "🔍 Exécution des tests unitaires avant le push..."
|
| 47 |
+
python -m pytest --cov=app --cov-report=term-missing
|
| 48 |
+
if [ $? -ne 0 ]; then
|
| 49 |
+
echo "❌ Push bloqué : les tests ont échoué."
|
| 50 |
+
exit 1
|
| 51 |
+
fi
|
| 52 |
+
```
|
| 53 |
+
|
| 54 |
+
#### 🔧 Installation manuelle
|
| 55 |
+
|
| 56 |
+
1. Crée un fichier `.git/hooks/pre-push` si ce n’est pas déjà fait,
|
| 57 |
+
2. Colle le script ci-dessus,
|
| 58 |
+
3. Rends-le exécutable :
|
| 59 |
+
|
| 60 |
+
```bash
|
| 61 |
+
chmod +x .git/hooks/pre-push
|
| 62 |
+
```
|