1/15
Fiches de vocabulaire couvrant les principes, commandes et bonnes pratiques des tests unitaires avec Pytest ainsi que la méthodologie du Test Driven Development (TDD).
Test unitaire
Méthode agile de travail consistant à tester de manière isolée de petites parties d'un code (appelées unités), le plus souvent des fonctions ou des classes, pour vérifier que chaque élément constitutif fonctionne correctement à partir d'entrées données.
Test d'intégration
Procédure de test axée sur des cas d'usage réels qui s'assure que plusieurs unités de code fonctionnent ensemble, en faisant fréquemment appel à des ressources externes comme des bases de données ou des serveurs web.
TDD (Test Driven Development)
Approche de développement itérative popularisée par Kent Beck, dans laquelle les tests unitaires sont rédigés avant même l'implémentation du code correspondant afin de guider et fiabiliser la conception logicielle.
unittest
Framework standard d'automated testing intégré de base dans Python.
pytest
Framework de test automatisé pour Python, réputé plus intuitif que unittest, capable d'exécuter automatiquement les tests respectant la convention de nommage et de générer des rapports d'erreurs détaillés.
Convention de nommage pytest
Règle imposant de nommer les fichiers de test avec le suffixe _test.py (ou préfixe test_) et de commencer systématiquement les fonctions de test par le préfixe test_, sans quoi pytest ne les exécute pas.
Instruction assert
Méthode utilisée dans les tests sous la forme assert fonction(arguments) == résultat attendu pour valider une condition et renvoyer une erreur d'assertion détaillée en cas de non-concordance.
Effets secondaires (side effects)
Modifications indésirables ou imprévues de l'environnement provoquées par l'exécution d'une unité de code, telles que l'altération de la valeur d'une variable globale ou de l'attribut d'une classe.
pytest.raises
Instruction de pytest employée sous la forme de gestionnaire de contexte (with pytest.raises(TypeErreur):) pour s'assurer qu'une fonction ou un bloc de code lève bien une exception spécifique face à une entrée donnée.
Fixture (@pytest.fixture)
Fonction définie à l'aide du décorateur @pytest.fixture servant à instancier un objet ou à préparer un environnement réutilisable, injecté en argument dans les fonctions de test et réinstancié à chaque exécution.
Fonction de test paramétrée (@pytest.mark.parametrize)
Décorateur de pytest permettant d'exécuter une même fonction de test à travers plusieurs scénarios ou jeux de données différents en fournissant la liste des arguments et des valeurs attendues associées.
Étape Red (TDD)
Première étape du cycle TDD consistant à identifier la fonctionnalité souhaitée et à rédiger son test unitaire, qui doit obligatoirement échouer au départ puisque le code n'est pas encore implémenté.
Étape Green (TDD)
Deuxième étape du cycle TDD consistant à écrire le code minimal nécessaire pour faire passer le test précédemment échoué avec succès, en privilégiant l'efficacité immédiate plutôt que l'optimisation.
Étape Refactor (TDD)
Troisième étape du cycle TDD consistant à restructurer, nettoyer et optimiser le code produit tout en vérifiant que les tests unitaires continuent d'être validés.
Étape Repeat (TDD)
Quatrième étape du cycle TDD consistant à répéter le schéma Red, Green, Refactor pour ajouter chaque nouvelle fonctionnalité du projet de manière incrémentale.
Kent Beck
Auteur et figure de l'agilité ayant popularisé le terme et la pratique du TDD (Test Driven Development) à travers ses ouvrages sur le développement guidé par les tests automatisés.