DY

TP02: 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:

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.

  1. Que constatez vous ?
  2. 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.

  1. Et si on relance notre test maintenant ?
  2. Pensez vous que notre jeu de test est suffisament fiable ?
Complexifions notre jeu de test
  1. Et si nous ajoutions une assertion à notre méthode test_multiply pour vérifier que le produit de 7 par 3 est égale à 21 ?
  2. Que se passe t'il lors de la relance de notre test ?
  3. Pouvez-vous corriger cette erreur ?
  4. 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.