Vérification des Exceptions en Python en Utilisant doctest
Lorsqu’on écrit du code en Python, il est souvent nécessaire de s’assurer que nos fonctions se comportent comme prévu, en particulier en ce qui concerne la gestion des erreurs. Un scénario courant est de tester si une fonction génère une exception sous certaines conditions. Si vous utilisez le module doctest
de Python pour effectuer vos tests, vous vous demandez peut-être : Puis-je vérifier qu’une exception est levée avec doctest
? La réponse est un oui retentissant ! Explorons comment utiliser doctest
pour vérifier les exceptions dans vos fonctions Python.
Le Problème : Tester les Exceptions
Considérons une fonction appelée foo(x)
. Cette fonction est conçue pour lever une exception si son argument est inférieur à zéro. La question centrale ici est comment écrire un doctest
qui confirme que la fonction se comporte correctement dans ce scénario. Plus précisément, lorsque nous passons une valeur inférieure à zéro, nous voulons nous assurer qu’une exception est levée pour indiquer qu’il y a eu un problème.
Fonction d’Exemple
Voici une version simple de la fonction foo(x)
:
def foo(x):
if x < 0:
raise ValueError("x doit être non négatif")
return x
La Solution : Écrire un doctest
Pour créer un doctest
qui vérifie les exceptions, nous allons utiliser l’approche suivante. Dans notre doctest
, nous pouvons spécifier que nous nous attendons à ce qu’une exception soit levée lors de l’appel de foo()
avec une valeur qui devrait déclencher l’erreur. Voici comment procéder étape par étape :
Étape 1 : Écrire le Doctest
Dans la docstring de votre fonction, vous pouvez ajouter un cas de test démontrant l’exception attendue. Voici ce que cela ressemble :
def foo(x):
"""
Retourne x s'il est non négatif.
Lève :
ValueError : Si x < 0.
Exemples :
>>> foo(-1)
Traceback (dernier appel le plus récent) :
...
ValueError : x doit être non négatif
>>> foo(3)
3
"""
if x < 0:
raise ValueError("x doit être non négatif")
return x
Étape 2 : Exécuter le Doctest
Pour exécuter le doctest
, incluez le snippet suivant en bas de votre script Python :
if __name__ == "__main__":
import doctest
doctest.testmod()
Étape 3 : Résultat Attendu
Lorsque vous exécutez le script, doctest
traitera les exemples dans la docstring. Si tout fonctionne correctement, vous ne verrez aucune sortie (indiquant que tous les tests ont réussi). Si l’exception n’est pas levée comme prévu, doctest
signalera une erreur.
Ressources Supplémentaires
Pour plus d’informations sur la façon d’utiliser efficacement doctest
dans vos modules, consultez la documentation officielle du module doctest.
Conclusion
Utiliser doctest
pour vérifier que les exceptions sont levées correctement n’est pas seulement possible ; c’est simple ! En ajoutant quelques lignes dans la docstring de votre fonction, vous pouvez efficacement documenter et tester le comportement de votre code, garantissant qu’il respecte des modèles attendus. Que vous écriviez de nouvelles fonctions ou testiez des fonctions existantes, doctest
offre un moyen puissant d’inclure des tests basés sur des exemples directement à côté de votre code. Profitez de rendre votre code robuste et bon codage !