Erreurs courantes : Syracuse

Tests indépendants

Une fonction de test doit être indépendante du reste du code. De là :

x = 1

def test_syracuse():
    assert syracuse(x) == 1

N'est pas correcte. On préférera être explicite :

def test_syracuse():
    assert syracuse(1) == 1

Noms des tests

Un test à sa son utilité. Son nom doit dire à quoi il sert. Ainsi test_1 n'est PAS un bon nom de test. On pourra avoir la convention de nommage suivante : test_nom_quoinom est le nom de la fonction que l'on teste et quoice que l'on teste.

exemple :

from syracuse import syracuse

def test_syracuse_pair():
    assert syracuse(2) == 1

Vos tests/main doivent se lancer

Un programme doit TOUJOURS marcher. Lorsque l'on exécute un "main.py" où que l'on lance les tests avec la commande pytest ils doivent se lancer. Cela ne veut pas dire que les tests soient tous vert, vous pouvez avoir un tests rouge ce qui signifie que vous êtes entrain de travailler sur cette fonctionnalité et qu'elle ne fonctionne pas encore, mais ils doivent se lancer.

Ainsi :

Si on ne peut pas exécuter votre fichier main ou que vos tests ne se lancent pas parce que vous vous êtres trompé dans un import ou que vous avez des erreurs de syntaxe, votre note chute drastiquement.

Dernière remarque : vos tests doivent tester des choses... Mettre des fonctions de tests sans qu'ils soient utile (genre assert 1 == 1) est également rédhibitoire.

Entrée utilisateurs et conversion de types

Après un input vous aurez toujours une chaîne de caractère. Il faut la convertir dans ce que va demander vos fonctions, ici des entiers.

Ne faites PAS de conversion de type dans vos fonctions. Si elles demandent des entrées entiers supposez que c'est le cas (par de int(x) % 2 par exemple dans la fonction syracuse). Tôt ou tard ce genre chose va vous sauter à la figure car un jour vous votre programme va planter sans que vous compreniez pourquoi ni où est le soucis.