04 Python et le TDD
Nos premiers tests unitaires en Python
Création de la structure du projet
Nous allons créer la structure de projet suivante:
.
├── maths.py
└── tests
├── __init__.py
└── test_maths.py
2 directories, 3 files
Approche TDD
Le but de ce TP est de créer plusieurs fonctions qui permettront de faire les opérations mathématique suivantes:
- addition
- soustraction
- multiplication
- division
Nous allons voir ensemble comment créer la suite de tests pour la multiplication.
Création de notre premier test
Nous allons ajouter à notre fichier test_maths.py un premier test:
import unittest
class TestMathsFunctions(unittest.TestCase):
def test_multiply(self):
self.assertEqual(multiply(2, 2), 4)
Nous pouvons éxécuter notre premier test pour ce faire nous allons lancer la commande suivante dans notre console:
$ python3 -m unittest
Attention cette commande doit être lancée à la racine de notre projet.
- Que constatez vous ?
- Comprenez vous cette erreur ?
Implémentation de la fonction multiplication
Nous venons de respecter les deux premières étapes du TDD, créer un test et vérifier que celui-ci est en erreur étant donné qu'il n'y pas de code source. Maintenant nous allons écrire juste assez de code pour que celui-ci passe.
Dans le fichier maths.py, ajoutons le code de la fonction multiplication
def multiply(left_factor, right_factor):
return left_factor + right_factor
Et dans le fichier test_maths.py ajoutons le code suivant:
from maths import multiply # Cette ligne permet d'importer la fonction multiplication au sein de notre fichier de test
Non non ce code ne contient aucune erreur, ne modifiez pas la ligne du corp de la fonction multiply.
- Et si on relance notre test maintenant ?
- Pensez vous que notre jeu de test est suffisament fiable ?
Complexifions notre jeu de test
- Et si nous ajoutions une assertion à notre méthode test_multiply pour vérifier que le produit de 7 par 3 est égale à 21 ?
- Que se passe t'il lors de la relance de notre test ?
- Pouvez-vous corriger cette erreur ?
- Que se passe t'il lors de la relance de notre test ?
Félicitations, vous venez de découvrir les tests unitaires et le TDD ! Désormais vous devrez utiliser cette technique de développement pour chaque TD !
Finalisation de notre projet de calculatrice
En respectant l'approche TDD, implémentez les trois opérations mathématique restantes.
Pour aller plus loin je ne peux que vous recommander la lecture de la superbe documentation du module unittest.