Tbruand commited on
Commit
b5cc534
·
1 Parent(s): c34292b

docs(test): ajoute un README expliquant les tests et le hook pre-push

Browse files
Files changed (1) hide show
  1. 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
+ ```