Effectuer des tests automatisés avec doctest dans un notebook Jupyter
On peut réaliser des tests automatisés dans un fichier python grâce à la bibliothèque doctest.
La bibliothèque doctest permet de détecter automatiquement les tests écrits dans la docstring, ou chaine de documentation, de les lancer et d’afficher un rapport.
Les valeurs à tester doivent être précédées de >>>
, et le résultat attendu doit être en début de ligne suivante.
Voici un exemple pour la fonction est_parfait
:
def est_parfait(n) :
'''n est un entier strictement positif
parfait(n) vaut True si l'entier n est parfait ou False sinon.
Un nombre parfait est tel que la somme de ses diviseurs est égale à son double.
>>> est_parfait(2)
False
>>> est_parfait(6)
True
>>> est_parfait(27)
False
>>> est_parfait(28)
True
'''
assert(n>0 and type(n)==int), "l'argument doit être un entier strictement positif"
diviseurs = [i for i in range(1,n+1) if n%i == 0]
return sum(diviseurs) == 2*n
On exécute dans une cellule du notebook les instructions suivantes :
import doctest
doctest.testmod()
Un rapport concis des tests est alors affiché (attention, les tests sont lancés sur l’ensemble du notebook) :
TestResults(failed=0, attempted=4)
ce qui signifie ici que les 4 tests n'ont donné lieu à aucun échec.
On peut ajouter l’argument verbose=True
en écrivant doctest.testmod(verbose=True)
: le rapport produit est alors plus explicite.
Trying:
est_parfait(2)
Expecting:
False
ok
Trying:
est_parfait(6)
Expecting:
True
ok
Trying:
est_parfait(27)
Expecting:
False
ok
Trying:
est_parfait(28)
Expecting:
True
ok
1 items had no tests:
__main__
1 items passed all tests:
4 tests in __main__.est_parfait
4 tests in 2 items.
4 passed and 0 failed.
Test passed.
TestResults(failed=0, attempted=4)