Test unitaire : Test qui vérifie qu'une petite partie du code (généralement une fonction) fonctionne correctement.
- Importer le module unittest
- Créer une classe qui hérite de unittest.TestCase
- Écrire une méthode de test commençant par test_
- Utiliser une assertion pour comparer le résultat attendu au résultat obtenu
Créer la fonction que vous souhaitez tester (ici: addition)
Hériter de unittest.TestCase pour bénéficier des assertions
Appeler la fonction et vérifier le résultat avec self.assertEqual
Le test vérifie que addition(3, 5) retourne 8
• Nom de méthode : Commencer les méthodes de test par test_
• Assertions : Utiliser des assertions pour comparer les résultats
• Indépendance : Chaque test doit être indépendant des autres
Cas de test : Ensemble d'entrées et de sorties attendues pour valider le comportement d'une fonction dans divers scénarios.
Tester avec des valeurs positives, négatives, zéro, grands nombres
Organiser les tests par catégorie pour une meilleure lisibilité
S'assurer que la fonction fonctionne correctement dans toutes les situations
La fonction est_pair fonctionne correctement pour tous les cas testés
• Cas limites : Tester avec des valeurs extrêmes et frontières
• Organisation : Regrouper les tests par catégorie de cas
• Complétude : Couvrir autant de cas que possible
Test d'erreur : Test qui vérifie qu'une fonction lève une exception dans certaines conditions.
Déterminer quand la fonction devrait lever une exception
Vérifier que l'exception est bien levée dans les cas appropriés
S'assurer que le message d'erreur est significatif
Le test vérifie que la fonction lève une exception appropriée dans les cas d'erreur
• Exceptions : Tester que les exceptions sont levées dans les bons cas
• Messages : Vérifier que les messages d'erreur sont clairs
• Robustesse : S'assurer que le code gère correctement les erreurs
Test de classe : Test qui vérifie le comportement d'une classe entière avec ses attributs et méthodes.
Créer les objets nécessaires avant chaque test
Vérifier chaque méthode de la classe avec des cas pertinents
Vérifier que les méthodes interagissent correctement entre elles
Les tests vérifient le comportement de la classe et de ses méthodes
• setUp : Utiliser setUp pour initialiser les objets avant chaque test
• Indépendance : Chaque test doit pouvoir s'exécuter seul
• Complétude : Tester toutes les méthodes et leurs interactions
Test de structures de données : Test qui vérifie les opérations sur des structures de données comme les listes.
Vérifier que la fonction fonctionne correctement dans des cas normaux
Vérifier le comportement avec des listes vides, un seul élément, etc.
Vérifier avec des valeurs particulières (négatives, zéro, etc.)
Les tests couvrent les cas normaux, limites et spéciaux pour les fonctions de manipulation de listes
• Cas limites : Tester avec des listes vides, un seul élément
• Spécificités : Considérer les particularités des données manipulées
• Complétude : Couvrir tous les scénarios d'utilisation possibles
- assertEqual(a, b) : Vérifie que a == b
- assertTrue(x) : Vérifie que x est vrai
- assertFalse(x) : Vérifie que x est faux
- assertIn(item, liste) : Vérifie que item est dans liste
- assertRaises(exception) : Vérifie qu'une exception est levée
- Chaque test doit être indépendant des autres
- Les tests doivent être rapides à exécuter
- Les noms des tests doivent décrire clairement ce qui est testé
- Les tests doivent couvrir à la fois les cas normaux et les cas limites
- Les tests doivent être maintenus à jour avec le code