10. Exemple de test unitaire avec CodePlay¶
Dans cet exercice, vous devez afficher un message de salutation puis vérifier que la sortie correspond bien à ce qui est attendu.
10.1. Énoncé¶
Écrivez un programme qui affiche :
Bonjour 42
10.2. Variante courte¶
Si vous voulez vérifier une seule condition, vous pouvez écrire :
10.3. Exemple multiligne¶
Voici un exemple où la sortie comporte plusieurs lignes :
10.4. Exemple avec input()¶
Vous pouvez aussi injecter une valeur prédéfinie pour input() :
10.5. Exemple avec trois inputs¶
Vous pouvez aussi fournir plusieurs valeurs pour plusieurs appels à input() :
Calculez 2 puissance 10 et stockez-le dans la variable res, puis exécuter le code.
10.6. ¶
Exemple avec un indice
10.7. Explication¶
Le directive codeplay peut valider la sortie du programme, le code écrit par l’élève, ainsi que les valeurs fournies à input().
10.7.1. 1. Syntaxe générale des assertions¶
Vous pouvez définir une ou plusieurs assertions avec l’option :assertions:.
Une assertion simple :
:assertions: exact:Bonjour 42
Plusieurs assertions à la fois : séparez-les par
;::assertions: exact:Bonjour 42;contains:42
Vous pouvez aussi utiliser l’option courte
:assert:qui ajoute des assertions de la même façon ::exec: :assert: contains:42
10.7.2. 2. Types d’assertions disponibles¶
exact:texteouequals:texte: vérifie que la sortie produite est exactement égale au texte attendu.Pour une sortie sur plusieurs lignes, utilisez
\npour représenter les retours à la ligne ::assertions: exact:0\n1\n2\n3
contains:texte: vérifie qu’une sous-chaîne apparaît dans la sortie.:assertions: contains:42
regex:pattern: vérifie la sortie avec une expression rationnelle.:assertions: regex:^Bonjour .*$
code:fragment: vérifie que le code de l’élève contient un fragment donné.C’est utile pour vérifier qu’une structure particulière a été utilisée, par exemple une boucle
for.
:assertions: code:for
10.7.3. 3. Cas avec plusieurs paramètres¶
Plusieurs assertions :
:assertions: exact:Bonjour Alice;contains:Alice;code:input
Plusieurs valeurs d’entrée pour plusieurs appels à
input(): séparez les valeurs par|dans:inputs:ou:input:.:inputs: Alice|Bob|Charlie
Pour une sortie attendue sur plusieurs lignes avec plusieurs assertions, vous pouvez combiner les deux idées :
:assertions: exact:Bonjour Alice\nBonjour Bob\nBonjour Charlie;code:for
10.7.4. 4. Résultat affiché à l’élève¶
Après exécution, le résultat est affiché directement dans la page HTML avec un statut de validation visible : succès ou échec, selon les assertions définies.