A l'attention des enseignants

**Le domaine des tests est très vaste.**

Il peut être intéressant de tester la conformité au cahier des charges d'un logiciel dans son ensemble (tests de recette), de tester les interactions entres différents éléments du programme (tests d'intégration) ou de tester des éléments individuels de notre programme (tests unitaires).

On peut aussi tester la rapidité/l'efficacité d'un programme.

Nous nous sommes volontairement limités, pour cette première approche, aux tests unitaires de conformité, laissant de côté les tests de performance et de plus grande envergure.

L'objectif est de faire réfléchir les élèves avant de concevoir une fonction et de les faire construire des exemples sur lesquels ils vont tester leur fonction.

Assert

Pour vérifier qu'une condition est vérifiée, on dispose du mot clé assert qui vérifie si une condition est vérifiée sinon, une exception AssertionError est levée :

1
>>>assert <condition>
2
est équivalent à :
3
4
>>>if cond == False:
5
       raise AssertionError   #lever une exception
6
7
#Il est possible de compléter l'instruction pour éclairer l'utilisateur lors de la levée de l'exception :
8
9
>>>assert produit(3, -2) == -6, "pb dans le cas de deux opérandes de signes différents"

Exemple

1
>>> a=0.1*3
2
>>> a

0.30000000000000004

1
>>> b=0.3
2
>>> assert a==b,"a et b ne sont pas égaux"

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

<ipython-input-1-fe99d7e4b4a7> in <module>

1 b=0.3

----> 2 assert a==b,"a et b ne sont pas égaux"

NameError: name 'a' is not defined

RemarquePytest

pytest : c'est un module supplémentaire de python qui permet de collecter et exécuter des tests de manière "souple".

Avantages :

Il collecte tous les tests et les lance sans se bloquer en cas d'AssertionError.

Il affiche un bilan global des tests effectués

objectif poursuivi :

L'idée est de montrer aux élèves la nécessité de faire des tests sur les fonctions qu'ils écrivent pour qu'ils vérifient que le résultat obtenu correspond bien à ce qui est attendu (en valeur et en type) .

prérequis :

programmation élémentaire (interactions avec l'interpréteur, variables, affectations, ...if, for, while et listes)

notion de fonction

tests/booléens