Débutant
🧠 Fondamentaux
10 XP
0 personnes ont réussi
Écrire un premier test assert
En entreprise, un code sans tests c'est une bombe a retardement. Tu modifies une fonction un vendredi soir, et lundi matin toute l'appli est cassee. Le assert, c'est la brique la plus simple du testing : un mot-cle Python qui verifie qu'une condition est vraie. Si elle est fausse, Python leve une erreur AssertionError.
Pense a assert comme un checkpoint : il verifie ta condition. Si tout est bon, le programme continue. Sinon, il s'arrete et te dit exactement ce qui ne va pas.
La syntaxe est toute simple :
assert 2 + 2 == 4 (passe sans problème) assert 2 + 2 == 5 (leve AssertionError) assert 2 + 2 == 5, "2+2 ne fait pas 5" (leve AssertionError avec un message)
Le message apres la virgule est optionnel, mais tres utile pour comprendre ce qui a echoue quand tu as beaucoup de tests.
Imagine que tu as une fonction carre(n) qui calcule le carre d'un nombre. Pour la tester, tu ecrirais :
assert carre(3) == 9, "Le carre de 3 devrait etre 9" assert carre(0) == 0, "Le carre de 0 devrait etre 0" assert carre(-2) == 4, "Le carre de -2 devrait etre 4"
Écris une fonction tester_addition(func) qui prend en paramètre une fonction d'addition (qui additionne deux nombres) et la teste avec au moins 4 assert differents. Ta fonction doit tester : deux nombres positifs, un nombre et zero, deux nombres negatifs, et un positif avec un negatif. Chaque assert doit avoir un message d'erreur clair en francais. La fonction renvoie "Tous les tests passent" si aucun assert n'a echoue.
Exemple :
def mon_addition(a, b): return a + b
tester_addition(mon_addition) renvoie "Tous les tests passent" tester_addition(lambda a, b: a * b) leve une AssertionError
Tests (4/4)
Teste une vraie addition
def add(a, b): return a + b
résultat = tester_addition(add)
assert résultat == 'Tous les tests passent', 'La fonction doit renvoyer le bon message quand les tests passent'
Detecte une mauvaise fonction
def mauvaise(a, b): return a * b
try:
tester_addition(mauvaise)
assert False, 'Tes tests auraient du detecter que la multiplication ne fait pas une addition'
except AssertionError:
pass
Teste le cas avec zero
echecs = []
def add_sans_zero(a, b):
if a == 0 or b == 0:
return 999
return a + b
try:
tester_addition(add_sans_zero)
assert False, 'Tes tests doivent vérifier le cas ou un des nombres est zero'
except AssertionError:
pass
Teste les nombres negatifs
def add_sans_negatifs(a, b):
if a < 0 or b < 0:
return 999
return a + b
try:
tester_addition(add_sans_negatifs)
assert False, 'Tes tests doivent vérifier le cas avec des nombres negatifs'
except AssertionError:
pass