AssertionError

Python Erreur courante

Explication

Une `AssertionError` est levée quand une instruction `assert` échoue, c'est-à-dire quand sa condition est **fausse**. `assert` sert de garde-fou (« je suis sûr que ceci est vrai à ce stade ») : si ce n'est pas le cas, Python interrompt l'exécution. Une `AssertionError` sans message signale simplement qu'un `assert` a échoué. ```python def diviser(a, b): assert b != 0, "le diviseur ne doit pas être nul" return a / b diviser(10, 0) # AssertionError: le diviseur ne doit pas être nul ```

Causes courantes

- **Une condition `assert` est fausse** au moment de son exécution. - **Un test (pytest / unittest) a échoué** : l'assertion révèle un écart entre l'attendu et l'obtenu. - **`assert` utilisé pour valider des données** (un mauvais usage, voir Prévention).

1. Lisez le message de l'assertion

Le texte après la virgule explique l'attente non respectée. Corrigez la donnée ou la logique qui rend la condition fausse.

2. Dans un test, l'assertion pointe un bug

def test_addition():
    assert addition(2, 3) == 5   # si ça échoue, addition() est fautive

3. Pour de la validation runtime, levez une vraie exception

assert est désactivé avec l'option -O : ne vous en servez pas pour valider des entrées en production.

if b == 0:
    raise ValueError("le diviseur ne doit pas être nul")

Comment prevenir cette erreur

- **Donnez un message clair** à chaque `assert` (`assert cond, "explication"`). - **N'utilisez `assert`** que pour des invariants internes / des tests, jamais pour valider des entrées utilisateur. - Souvenez-vous que `python -O` supprime les assertions. - Référence : [docs.python.org — assert](https://docs.python.org/fr/3/reference/simple_stmts.html#the-assert-statement).

Besoin d'aide sur votre projet ?

Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.

Nous contacter

Questions frequentes

Pourquoi mes `assert` disparaissent-ils en production ?
Parce que lancer Python avec l'option `-O` (optimisé) désactive toutes les instructions `assert`. C'est pourquoi il ne faut jamais s'en servir pour de la validation critique : utilisez `raise` à la place.
Comment afficher pourquoi une assertion a échoué ?
Ajoutez un message : `assert x > 0, f"x devrait être positif, vaut {x}"`. Le message apparaît dans l'`AssertionError`.

Erreurs similaires

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.