3.4Tests automatisés (pytest) & typage (type hints)
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).
Quel est l'intérêt d'un générateur (yield) ?
En pratique — Tester avec pytest et annoter les types
- Installez pytest (pip install pytest). Écrivez une fonction à tester (ex. addition) dans un fichier, et ses tests dans « test_xxx.py » avec des assert.
- Lancez « pytest » dans le terminal : observez le rapport (points verts / échecs) et provoquez volontairement un échec pour lire le diagnostic.
- Annotez vos fonctions avec des type hints : def moyenne(notes: list[float]) -> float.
- Écrivez un test qui couvre un cas limite (liste vide, valeur négative) : prenez l'habitude de tester les bords.
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).