3.4 · Tests automatisés (pytest) & typage (type hints)

Niveau 3 · Python intermédiaire

3.4Tests automatisés (pytest) & typage (type hints)

Objectif : fiabiliser le code avec des tests et des annotations de types.
Temps estimé : 14 min

Comment savoir qu'une modification n'a rien cassé ailleurs ? Les tests automatisés répondent à cette question. Avec pytest, on écrit de petites fonctions qui vérifient que le code produit bien le résultat attendu, et on les relance à volonté. C'est le filet de sécurité de tout projet sérieux.

Vous découvrez aussi les annotations de type (type hints) : def somme(a: int, b: int) -> int. Elles ne changent pas l'exécution mais documentent le code, aident l'éditeur (autocomplétion, détection d'erreurs) et facilitent la maintenance des grands projets.

Vocabulaire de la section

Test automatisé
Code qui vérifie automatiquement qu'une portion du programme fonctionne comme prévu, réexécutable à tout moment.
pytest
Framework de test le plus populaire : on écrit des fonctions test_*() contenant des assert, lancées par la commande pytest.
assert
Vérifie qu'une condition est vraie ; sinon le test échoue. assert somme(2,3) == 5.
Type hints
Annotations indiquant les types attendus (a: int) -> str. Documentent sans contraindre l'exécution.
mypy
Outil qui vérifie la cohérence des annotations de type sans exécuter le code (analyse statique).
Vérifiez votre compréhension

Quel est l'intérêt d'un générateur (yield) ?

Tests automatisés (pytest) & typage (type hints)
Vidéo hébergée sur YouTube — ouvrir dans un nouvel onglet ↗
Tutos pytest & type hints Python (recherche FR)
Cliquer pour voir les résultats à jour ↗

En pratique — Tester avec pytest et annoter les types

  1. Installez pytest (pip install pytest). Écrivez une fonction à tester (ex. addition) dans un fichier, et ses tests dans « test_xxx.py » avec des assert.
  2. Lancez « pytest » dans le terminal : observez le rapport (points verts / échecs) et provoquez volontairement un échec pour lire le diagnostic.
  3. Annotez vos fonctions avec des type hints : def moyenne(notes: list[float]) -> float.
  4. Écrivez un test qui couvre un cas limite (liste vide, valeur négative) : prenez l'habitude de tester les bords.
Vous écrivez des tests pytest qui sécurisent vos évolutions et annotez vos fonctions : deux marques d'un code professionnel et maintenable.

Points clés à retenir

  • Les tests automatisés vérifient que le code marche — et le prouvent après chaque modif.
  • pytest : des fonctions test_*() avec assert, lancées par la commande pytest.
  • Les type hints documentent les types attendus sans changer l'exécution.
  • Testez aussi les cas limites (vide, négatif, zéro) : c'est là que ça casse.

Questions fréquentes

Écrire des tests, n'est-ce pas une perte de temps ?

C'est un investissement rentable : les tests détectent immédiatement une régression, autorisent à refactorer sans crainte, et documentent le comportement attendu. Sur un projet qui vit, le temps gagné à ne pas chasser des bugs dépasse largement le temps d'écriture des tests.

Les type hints sont-ils obligatoires ?

Non, Python les ignore à l'exécution ; le code tourne sans eux. Mais ils améliorent nettement l'autocomplétion, la détection d'erreurs par l'éditeur et la lisibilité. Sur les projets d'équipe ou de grande taille, ils sont fortement recommandés (et vérifiables avec mypy).

Autres ressources

Testez-vous : quiz du niveau 35 questions pour valider vos acquis avant de passer au niveau suivant