Chapitre 4 : Mise au point de programmes⚓︎
Le but de ce chapitre est de travailler sur la mise au point de programmes robustes à travers l'écriture de jeux de tests et la compréhension des messages d'erreur.
Utilisation du module doctest
⚓︎
La fonction min_et_max
définie ci-dessous a pour rôle de renvoyer la plus petite et la plus grande des valeurs stockées dans un tableau non vide.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
Pour vérifier que la fonction a le bon comportement, on effectue une série de tests. Par exemple,
1 2 |
|
1 2 3 4 |
|
1 2 |
|
Il est possible d'intégrer directement ces tests à la docstring de la fonction min_et_max
en procédant de la façon suivante :
- Les tests s'écrivent à la fin de la docstring.
- Les lignes de code à exécuter au cours du test sont précédées de trois chevrons
>>>
. - Le résultat attendu pour chaque test est indiqué sur la ligne juste en dessous des trois chevrons.
Les tests intégrés à la docstring sont appelés doctests.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
Pour lancer les tests présents dans la docstring d'une fonction, il suffit d'appeler la fonction run_docstring_examples
du module doctest
. Le premier argument est le nom de la fonction à tester, le second est globals()
.
1 2 |
|
Le fait que rien ne s'affiche à l'exécution de la cellule ci-dessus signifie que tous les tests ont été passés avec succès.
En passant l'argument True
au paramètre optionnel verbose
, on obtient un affichage détaillé des tests effectués.
1 |
|
Il est également possible de tester l'ensemble des doctests présents dans un fichier ou dans un carnet Jupyter. Il suffit pour cela d'appeler la fonction testmod
du module doctest
sans aucun argument (sauf le paramètre optionnel verbose
).
Messages d'erreur⚓︎
(voir activité "Messages d'erreur classiques")
Exercices et activités⚓︎
Exercices
Activités
L'objectif de l'activité est de comprendre, et donc d'apprendre à éviter, une trentaine de messages d'erreur.
Carnet Jupyter à télécharger ici
Corrigé disponible ici
Il s'agit de disposer huit reines sur un échiquier de sorte qu'aucune n'en menace une autre.
Une manière de résoudre ce problème est de mettre en oeuvre un algorithme de backtracking.
Version jouable à télécharger ici