Aller au contenu

Les fonctions de tests⚓︎

Il est essentiel de tester que vos programmes font bien ce qu'on leur demande, pour cela différents mécanismes existent.

Vous pouvez écrire une fonction servant à tester une autre fonction, voici un exemple simpliste :

###

# la fonction que je dois coder :bksl-nldef puiss(x, n):bksl-nl for i in range(n):bksl-nl x = x py-str xbksl-nl # je multiplie n fois par x pour calculer x^nbksl-nl return xbksl-nlbksl-nl# la fonction qui teste le bon fonctionnementbksl-nl# de la fonction précédentebksl-nldef testpy-undpuiss():bksl-nl if puiss(2, 3) == 8:bksl-nl print('Ok pour 2^3')bksl-nl else:bksl-nl print('Pb pour 2^3')bksl-nl if puiss(-1, 4) == 1:bksl-nl print('Ok pour (-1)^4')bksl-nl else:bksl-nl print('Pb pour (-1)^4')bksl-nl if puiss(10, 5) == 100000:bksl-nl print('Ok pour 10^5')bksl-nl else:bksl-nl print('Pb pour 10^5')bksl-nl

A

Z

exécutez le script et appelez la fonction test_puiss() dans la console (ce qui nous montrera ici la fonction puiss est mal écrite...).

Une alternative au if ... else consiste à utiliser des assert :

###

def puiss(x, n):bksl-nl for i in range(n):bksl-nl x = x py-str xbksl-nl return xbksl-nlbksl-nldef testpy-undpuiss():bksl-nl assert puiss(2, 3) == 8, 'Pb pour 2^3'bksl-nl assert puiss(-1, 4) == 1, 'Pb pour (-1)^4'bksl-nl assert puiss(10, 5) == 100000, 'Pb pour 10^5'bksl-nl

A

Z

c'est bien plus court et plus lisible. S'il n'y a pas d'erreur, rien ne s'affichera. Si une des conditions n'est pas vérifiée alors le programme s'arrêtera avec une erreur.

La programmation TDD

Une des façons de développer un logiciel est le TDD (Test Driven Developement) : cela consiste à écrire d'abord une fonction de test de la fonction que nous voulons coder, en fonction de ce qu'elle doit faire puis de coder cette fonction principale.

Exercice 3

  1. Écrivez une fonction permettant de tester le bon fonctionnement d'une autre fonction, nommons-là lister_pairs, qui doit donner la liste des nombres pairs inférieurs à un nombre donné.
  2. Écrivez maintenant le code de la fonction lister_pairs.
  3. Exécutez la fonction de test de la fonction lister_pairs.

###