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:texte ou equals:texte : vérifie que la sortie produite est exactement égale au texte attendu.

    • Pour une sortie sur plusieurs lignes, utilisez \n pour 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.