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
count_vowel
.
Objectif : Écrire des tests pour la fonction -
É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
- Utilisez
-
É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
french_scrabble_score
.
Objectif : Écrire la fonction 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
ouunittest
. -
Étape 3 : Ecrivez la fonction.