Infoforall

Identification

Infoforall

Résumé 19 - DOCTESTS : DOCUMENTER ET TESTER


Lien vers l'activité : doctests : documenter et tester

Dernière modif. : 10 12 2020

1 Démarche habituelle de création de fonctions :

  • 1 - On écrit ou reçoit la demande documentée
  • 2 - On écrit une base pertinente de tests documentés. Ces tests doivent permettre :

    • de comprendre la fonction d'utiliser la fonction
    • de vérifier les cas un peu particulier qu'on a prédétecté comme problématique
  • 3 - On écrit le code

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
def note_valide(note) : '''Renvoie True si note est dans l'intervalle [ 0 ; 20 ] :: param note (int) : la note à tester : :return (bool) :: True si note dans [ 0 ; 20 ] :Exemple: >>> note_valide(5) True >>> note_valide(-5) False ''' if note > 20 : return False elif note < 0 : return False else : return True
  • 4 - On rajoute l'activation du doctest
22 23 24
if __name__ == "__main__": import doctest doctest.testmod()

2 Assert

Pour rendre une condition plus contraignante qu'une simple indication dans une documentation, on peut utiliser une assertion.

Pour cela, on utilise le mot-clé assert.

Son utilisation basique se résume à une succession de trois éléments :

  • Le mot-clé assert
  • Un espace suivi de la condition qu'on veut vérifier sous forme d'une expression booléenne
  • Une virgule suivi du texte à afficher si l'expression est évaluée à False

En résumé :

1
assert note >= 0 and note <= 20, "Pas dans [0;20] !"

3 Assert pour réaliser des tests

Finalement, on peut même se passer des modules de tests automatiques et n'utiliser que des asserts contenus dans une fonction qu'on lancera pour tester nos fonctions.

1 2 3 4 5 6 7 8 9
def addition(a, b) : return a+b def test_maison() : assert addition(10,5) == 15, 'Echec du test : addition(10,5) == 15' assert addition(10,-5) == 5, 'Echec du test : addition(10,5) == 15' if __name__ == '__main__' : test_maison()