Lire la spécification
Repère les paramètres, les valeurs autorisées et surtout ce que la fonction doit renvoyer ou modifier.
assertUne fiche express pour choisir de bons jeux de tests, vérifier les résultats attendus et éviter les erreurs classiques le jour de l’épreuve pratique.
Tester = prévoir le résultat avant d’exécuter
6 réflexes simples pendant l’épreuve
Repère les paramètres, les valeurs autorisées et surtout ce que la fonction doit renvoyer ou modifier.
Calcule toi-même le résultat attendu avant d’écrire le test. Le test ne doit pas dépendre du programme testé.
Commence par une situation simple, représentative du fonctionnement normal.
Teste si pertinent : liste vide, un seul élément, 0, 1, valeur négative, élément absent… uniquement si l’énoncé les autorise.
Avec assert expression, aucune sortie signifie que le test est réussi. Une AssertionError indique un échec.
Vérifie d’abord que ton résultat attendu est juste, puis cherche l’erreur dans la fonction.
À savoir reconnaître et reproduire
On compare directement le résultat de la fonction avec la valeur que l’on a calculée à l’avance.
Utilise plusieurs valeurs pour vérifier différents cas.
def carre(x):
return x * x
assert carre(3) == 9 # cas classique
assert carre(0) == 0 # cas particulier : zéro
assert carre(-4) == 16 # valeur négativeSi une fonction renvoie True ou False, inutile d’écrire == True ou == False.
assert est_pair(4) # 4 est pair : True attendu
assert not est_pair(5) # 5 n'est pas pair : False attenduTeste un élément présent, un élément absent et, si c’est pertinent, une structure très petite.
assert recherche(3, [1,3,5]) == 1 # 3 est à l'indice 1
assert recherche(8, [1,3,5]) == -1 # 8 est absent
assert recherche(4, [4]) == 0 # liste à un seul élémentSi la fonction modifie une liste sans la renvoyer, on teste la liste après l’appel, pas la valeur renvoyée par la fonction.
L = [3, 1, 2] # liste avant le tri
tri(L) # la fonction modifie directement L
assert L == [1, 2, 3] # on vérifie l'état final de LCommence par les cas de base, puis vérifie au moins un cas général.
assert factorielle(0) == 1 # cas de base
assert factorielle(1) == 1 # autre cas simple
assert factorielle(5) == 120 # cas généralOn peut comparer directement le dictionnaire obtenu au dictionnaire attendu.
assert compte(["a","b","a"]) == {
"a": 2, # la lettre a apparaît 2 fois
"b": 1 # la lettre b apparaît 1 fois
}| À éviter | Bonne pratique |
|---|---|
| Tester uniquement l’exemple donné | Ajouter un cas différent ou limite pertinent. |
| Inventer un résultat attendu compliqué | Choisir des données dont le résultat se calcule facilement à la main. |
| Tester une valeur interdite par la spécification | Respecter les préconditions de l’énoncé. |
Écrire assert tri(L) == ... alors que tri ne renvoie rien | Appeler la fonction puis tester l’état de L. |
| Modifier le programme juste pour faire passer un test faux | Recalculer d’abord le résultat attendu. |
Un bon test utilise un cas assez simple pour que tu sois certain du résultat attendu sans demander au programme de le calculer.
assert20 questions • score sur 20
assert passent.