Le travail qui suit s’appuie sur la définition de la fonction kelvin_vers_celsius
suivante :
|
|
Première utilisation du module doctest
À quoi sert le module doctest
?
À faire
-
Taper le code complet de la définition de la fonction
kelvin_vers_celsius
dans un fichier. -
Écrire, sur la première ligne du fichier, l’instruction :
|
|
Enregistrer le fichier contenant le code précédent.
- Charger le fichier dans l’interpréteur. La fonction peut être appelée, rien de particulier n’apparaît pour l’instant.
|
|
- Entrer et exécuter l’instruction suivante :
|
|
La fonction testmod
du module doctest
semble avoir effectué deux tests (attempted=2
) sans avoir rencontré le moindre problème (failed=0)
.
Mais quels tests a-t-elle effectué ?
- Entrer et exécuter l’instruction suivante :
|
|
La fonction testmod
du module doctest a :
- lu la documentation de la fonction
kelvin_vers_celsius
à la recherche de lignes débutant par>>>
; - exécuté les instructions de ces lignes ;
- vérifié que le résultat retourné correspond bien à ce qui est écrit dans cette documentation.
- Modifier maintenant, dans la définition de la fonction
kelvin_vers_celsius
, la valeur 0.0 par 1.0. Charger à nouveau le fichier dans l’interpréteur et relancer la commande du point 5. ci-dessus.
Que retourne la fonctiontestmod
maintenant ? Ce message décrit-il précisément le problème ?
Comment rendre l’analyse de la valeur retournée par une fonction automatique ?
-
Effacer l’instruction
import doctest
de la ligne 1 du code. -
Inclure, à la fin du fichier (après la définition de toutes les fonctions), le bloc d’instructions suivant :
|
|
-
Lancer à nouveau le programme.
La fonctiontestmod
est lancée automatiquement et retourne la même erreur qu’au point 6 de la section 2.1 ci-dessus. -
Modifier maintenant, dans la documentation de la fonction
kelvin_vers_celsius
, la valeur 1.0 par 0.0.
A-t-on la moindre indication que la fonctiontestmod
a été lancée ?
Que faire lorsqu’on souhaite prendre en compte la mauvaise utilisation d’une fonction ?
- Remplacer la définition de la fonction
kelvin_vers_celsius
par celle-ci :
|
|
Quelle est la différence dans le comportement de la fonction ce code introduit-il ?
-
Pour l’instant la documentation de la fonction ne comporte aucun exemple illustrant ce à quoi il faut s’attendre si on appelle la fonction avec un nombre négatif.
-
Charger le fichier dans l’interpréteur.
-
Écrire et exécuter l’instruction
1
>>> kelvin_vers_celsius(-5)
On obtient
1 2 3
Traceback (most recent call last): ... ValueError: Température en kelvin doit être positive !
- Ce sont ces lignes qu’il faut ajouter à la documentation de la fonction
1 2 3 4 5
>>> kelvin_vers_celsius(-5) Traceback (most recent call last): ... ValueError: Température en kelvin doit être positive !
Compléter la documentation de la fonction et la tester.
-
À retenir
Pour chacune des fonctions, il faut
-
Incorporer à sa documentation des exemples pertinents d’utilisation de ces fonctions ;
-
Ajouter le bloc d’instruction suivant à la fin du fichier
|
|
Exercices
Exercice 1
Définir le prédicat est_egal
dont une partie de la spécification est :
|
|
Remplacer les xxx
de façon à ce que la fonction testmod accepte votre définition.
Exercice 2
Définir la fonction inverse
dont une partie de la spécification est :
|
|
Remplacer les xxx de façon à ce que la fonction testmod accepte votre définition.