Skip to content
Snippets Groups Projects

Tests en Python

Dans ce bloc-notes, nous allons couvrir brièvement trois outils de test populaires en Python: doctest, unittest et pytest.

1. Doctest

doctest permet d'extraire des tests à partir de la documentation. Pour l'utiliser:


def addition(a, b):
    """
    Cette fonction ajoute a et b ensemble.

    >>> addition(2, 2)
    4
    >>> addition(2, 3)
    5
    """
    return a + b

if __name__ == "__main__":
    import doctest
    doctest.testmod()

Lorsque vous exécutez ce script, doctest vérifiera si les exemples dans la documentation sont corrects.

2. Unittest

unittest est la bibliothèque standard de tests unitaires en Python.


import unittest

def addition(a, b):
    return a + b

class TestAddition(unittest.TestCase):

    def test_addition(self):
        self.assertEqual(addition(2, 2), 4)
        self.assertEqual(addition(2, 3), 5)

if __name__ == "__main__":
    unittest.main()

Pour lancer les tests avec unittest, on utilise:

python -m unittest nom_du_script
# ou
python nom_du_script.py # si on a mis `unitest.main()` 

3. Pytest

pytest est une bibliothèque externe qui offre plus de fonctionnalités que unittest.

Pour l'utiliser, installez-le avec pip:

pip install --user pytest

Puis écrivez des tests:


def addition(a, b):
    return a + b

def test_addition():
    assert addition(2, 2) == 4
    assert addition(2, 3) == 5

Exécutez vos tests avec la commande:


pytest <nom_du_fichier>.py

Exercice

Cloner le repo et travailler dans exercice_1.py et exercice_2.py.

Exo 1

Objectif : Écrire des tests pour la fonction count_vowel.

  • Étape 1 : Rédigez la docstring et les doctests pour la fonction.

  • Étape 2 : Ajoutez des tests pour la fonction.

    • Utilisez pytest
    • Ou utilisez unittest
  • Étape 3 : Pensez aux cas limites pour cette fonction :

    • Gestion des accents (é, è, ê, etc.)
    • Combinaisons de lettres comme "oe"
  • Étape 4 : Modifiez la fonction et les tests selon les cas limites identifiés. imites identifiés.

Exo 2

Objectif : Écrire la fonction french_scrabble_score.

Cette fonction doit calculer le score d'un mot donné en Scrabble en fonction du dictionnaire Python du score des lettres. Le résultat doit être un entier. Si le mot n'est pas valide, retournez -1. Un dictionnaire contenant la valeur des lettres est fourni.
Un dictionnaire des mots valide dans le scrabble français est aussi fourni dans le dossier data.

Considérations :

  • La fonction peut (ou non) gérer les mots avec des accents et la ligature oe.
  • Si elle ne les gère pas, elle doit lever une exception.
  • Dans tous les cas, prévoir des tests et expliquer comment les cas sont gérés.

Etapes :

  • Étape 1 : Rédigez la docstring et ajoutez quelques doctests., pensez aux différents cas limite (majuscules, accents etc..).

  • Étape 2 : Ajoutez des tests supplémentaires, en utilisant par exemple pytest ou unittest.

  • Étape 3 : Ecrivez la fonction.