Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Aperçu

Vérifier avec assert

Voici la première page de la leçon. Lis-la et essaie les activités. La suite est dans le cours complet.

30 minutes

Vérifier à la main, encore et encore

Tu changes une ligne de ton programme. Tu le lances. Tu regardes si le résultat est bon. Tu recommences après chaque changement.

C'est long, et on finit par oublier un cas. Un jour, une vieille fonction ne marche plus, et personne ne s'en aperçoit.

Les programmeurs écrivent donc des tests : de petites vérifications que l'ordinateur refait tout seul.

Mots-clés

MotCe que ça veut direExemple
TestUne vérification : on appelle la fonction et on compare avec la réponse attendue.tarif_bus(5) doit rendre 0
assertMot de Python qui vérifie qu'une condition est vraie. Sinon, le programme s'arrête.assert aire(3, 4) == 12
Jeu d'essaiLes valeurs choisies pour tester, avec la réponse attendue pour chacune.Les âges 5, 11, 12, 25, 26
Cas limiteUne valeur au bord d'une règle, là où le résultat change.11 ans et 12 ans
Résultat attenduLa réponse qu'on doit obtenir, décidée avant de lancer.1 euro
Fonction de testUne fonction dont le nom commence par test_ et qui contient des assert.def test_enfants():

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Le mot assert

On écrit assert, puis une condition. Si elle est vraie, il ne se passe rien : le programme continue.

Si elle est fausse, Python s'arrête avec une AssertionError. Ce message veut dire : « Ce que tu croyais vrai est faux. »

Après la condition, une virgule et une phrase donnent le texte du message : assert x == 3, "x doit valoir 3".

À toi : un test qui échoue

Code: python
def aire(longueur, largeur):
    return longueur * largeur


assert aire(3, 4) == 12
print("Premier test réussi")
assert aire(10, 5) == 50
print("Deuxième test réussi")
assert aire(2, 2) == 5
print("Troisième test réussi")

# Lance. Quel print n'apparaît jamais ? Pourquoi ?
# Corrige le nombre attendu du troisième assert.

Quels cas choisir

Un seul test ne prouve pas grand-chose. Il faut des cas différents.

Prends un cas typique, que tout le monde attend. Prends les cas limites, aux bords d'une règle. Prends le cas vide ou zéro.

Les bogues se cachent presque toujours aux bords.

Exemple travaillé : le jeu d'essai de tarif_bus

ÂgeSorte de casTarif attendu (euros)
0zéro0
5typique0
11limite : dernier gratuit0
12limite : premier à 1 euro1
25limite : dernier à 1 euro1
26limite : premier à 2 euros2
60typique2

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

À toi : trouver le bogue grâce au message

Code: python
def tarif_bus(age):
    # Moins de 12 ans : gratuit. De 12 à 25 ans : 1 euro. Après : 2 euros.
    if age < 12:
        return 0
    elif age < 25:
        return 1
    else:
        return 2


assert tarif_bus(5) == 0, "5 ans doit être gratuit"
assert tarif_bus(11) == 0, "11 ans doit être gratuit"
assert tarif_bus(12) == 1, "12 ans doit coûter 1 euro"
assert tarif_bus(25) == 1, "25 ans doit coûter 1 euro"
assert tarif_bus(26) == 2, "26 ans doit coûter 2 euros"
print("Tous les tests passent")

# Lance. Le message après la virgule dit quel test a échoué.
# Corrige la fonction, puis relance.

Contrôle rapide

À toi de jouer

Contrôle rapide

3 questions
Essayez : vos réponses sont notées ici puis oubliées. Connectez-vous si vous voulez conserver votre score et reprendre là où vous en étiez.Se connecter pour conserver mon score

Tes réponses sont corrigées ici et ne sont pas conservées. Un compte garde tes résultats.

Ranger ses tests dans des fonctions

Quand les tests sont nombreux, on les range dans des fonctions. Chaque nom commence par test_.

Une fonction de test vérifie une seule idée. Son nom la décrit : test_enfants, test_adultes.

Si une idée échoue, tu sais tout de suite laquelle. Les tests cachés des tâches de ce cours sont écrits ainsi.

La leçon continue

6 parties de plus de cette leçon se trouvent dans le cours complet, avec les exercices et la vérification finale. Un compte te donne tout.