Tester son code Python avec pytest : un premier test sans stress
Apprenez à tester une fonction Python avec pytest : installation, premier test, lecture des résultats et erreurs fréquentes expliquées simplement.
Oui : pytest est adapté à un premier projet Python, car il vérifie automatiquement qu’une fonction renvoie le résultat attendu. Pour commencer, installez-le dans l’environnement du projet, créez un fichier test_*.py et écrivez une assertion.
Un test ne prouve pas que tout le programme est correct : il vérifie seulement les situations que vous avez choisies. Vous pouvez le relancer après chaque modification pour repérer un comportement qui a changé.
Installer pytest
Installez pytest dans l’environnement de votre projet pour éviter de mélanger les bibliothèques de plusieurs projets. Avec uv, créez un projet si nécessaire, puis ajoutez pytest comme dépendance de développement :
uv init budget-tests
cd budget-tests
uv add --dev pytest
Avec pip, créez d’abord un environnement virtuel, puis installez pytest. Le guide créer un environnement virtuel avec venv explique sa création et son activation.
python -m venv .venv
python -m pip install pytest
Une fois pytest installé, lancez-le avec uv run pytest ou python -m pytest. Ces commandes utilisent pytest associé au projet ou à l’environnement actif ; la prise en main officielle de pytest et la documentation de uv peuvent aider si une commande n’est pas reconnue.
Écrire et lancer un premier test
Dans le dossier du projet, créez calcul.py avec une fonction qui calcule un prix TTC :
def prix_ttc(prix_ht, taux_tva):
return prix_ht * (1 + taux_tva / 100)
Créez ensuite test_calcul.py dans le même dossier. Le préfixe test_ permet à pytest de repérer le fichier, et la fonction de test doit aussi commencer par test_.
from calcul import prix_ttc
def test_prix_ttc_avec_tva_a_20_pourcent():
assert prix_ttc(50, 20) == 60
Ouvrez un terminal dans ce dossier, puis lancez l’une des commandes suivantes :
uv run pytest
python -m pytest
Si le test réussit, pytest affiche un point puis un résumé. Cela confirme uniquement que prix_ttc(50, 20) renvoie bien 60.
Lire un échec
Si vous remplacez temporairement 60 par 59 dans l’assertion, le test échoue. pytest indique le test concerné, la ligne de l’assertion, la valeur obtenue et celle attendue.
Un échec peut venir du programme ou d’une attente incorrecte dans le test. Ici, la fonction produit 60 alors que le test demande 59 : rétablissez 60, relancez pytest et conservez le test pour vérifier ce calcul après de futures modifications.
Blocages fréquents
- pytest n’est pas trouvé : vérifiez l’environnement actif, ou utilisez uv run pytest ou python -m pytest.
- Aucun test n’est lancé : vérifiez que le fichier et la fonction commencent par test_.
- ModuleNotFoundError pour calcul : pour cet exercice, placez calcul.py et test_calcul.py dans le même dossier.
- Erreur d’indentation : décalez les lignes d’une fonction de façon cohérente. Les tracebacks Python indiquent le fichier et la ligne à examiner.