assert

Qu'est-ce que le mot-clé assert en Python ?

L'instruction assert en Python est principalement dédiée aux tests et au débogage. Cette instruction n'est pas destinée à être utilisée pour de la logique métier en production.

Vous pouvez voir assert comme un garde-fou permettant de vérifier si une condition est vraie. Si c'est le cas, le programme continue normalement ; sinon, le programme s'arrête immédiatement et lève une AssertionError.

Syntaxe

La syntaxe d'une assertion comprend deux parties, dont une optionnelle :

assert condition_a_tester, "Message d'erreur optionnel"
PYTHON
  • condition_a_tester correspond à une expression qui doit retourner True ou False

  • "Message d'erreur optionnel" correspond à une chaîne de caractères qui sera affichée si l'assertion échoue

Exemple d'utilisation

Imaginons une fonction qui applique une réduction sur un prix. La réduction ne doit pas être supérieure à 100 % ni être négative. Utilisons assert comme un garde-fou :

def appliquer_reduction(prix, reduction):
    # L'assertion vérifie que la réduction est cohérente lors de nos tests
    assert 0 <= reduction <= 100, "Erreur : La réduction doit être comprise entre 0 et 100."

    prix_final = prix * (1 - reduction / 100)
    return prix_final

# Appel valide : le programme continue
nouveau_prix = appliquer_reduction(50, 20)
print(f"Le nouveau prix est de {nouveau_prix}€") # Affiche : Le nouveau prix est de 40.0€

# Appel invalide : le programme s'arrête et déclenche une AssertionError
prix_erreur = appliquer_reduction(50, 150) 
# AssertionError: Erreur : La réduction doit être comprise entre 0 et 100.
PYTHON
Un instant

Créez un compte pour exécuter ce code

Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.

Quand utiliser assert ?

L'instruction assert est conçue pour les développeurs. En tant que filet de sécurité, vous l'utiliserez pour :

  • Déboguer votre code en cours d'écriture

  • Documenter vos hypothèses

  • Écrire des tests automatisés (d'ailleurs, c'est le cœur du framework pytest)

Cependant, les assertions ne doivent jamais être utilisées pour valider les données saisies par un utilisateur final. En effet, si vous exécutez du code en mode optimisé avec python -O mon_script.py, toutes les instructions assert sont ignorées. Je vous laisse imaginer que cela peut vite devenir très dangereux si vous utilisez assert pour vérifier si un utilisateur doit accéder à une page ou si un mot de passe est valide.

À noter

Pour la validation de données liées à des événements extérieurs (saisie utilisateur, réponse inattendue d'une API, fichier introuvable, etc.), privilégiez les exceptions classiques avec raise.

Bravo, tu es prêt à passer à la suite

Rechercher sur le site

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.