Assertions en Python
Une assertion est un contrôle de cohérence que vous pouvez activer ou désactiver lorsque vous avez terminé votre test du programme.
La façon la plus simple de penser à une assertion est de la comparer à un raise-ifinstruction (ou pour être plus précis, une instruction rise-if-not). Une expression est testée et si le résultat est faux, une exception est déclenchée.
Les assertions sont effectuées par l'instruction assert, le mot-clé le plus récent de Python, introduit dans la version 1.5.
Les programmeurs placent souvent des assertions au début d'une fonction pour vérifier l'entrée valide, et après un appel de fonction pour vérifier la sortie valide.
La déclaration d' assert
Lorsqu'il rencontre une instruction assert, Python évalue l'expression d'accompagnement, ce qui est, espérons-le, vrai. Si l'expression est fausse, Python déclenche une exception AssertionError .
La syntaxe pour assert est -
assert Expression[, Arguments]
Si l'assertion échoue, Python utilise ArgumentExpression comme argument pour AssertionError. Les exceptions AssertionError peuvent être interceptées et gérées comme toute autre exception à l'aide de l'instruction try-except, mais si elles ne sont pas gérées, elles mettront fin au programme et produiront une trace.
Exemple
Voici une fonction qui convertit une température de degrés Kelvin en degrés Fahrenheit. Puisque zéro degré Kelvin est aussi froid que possible, la fonction se retire si elle voit une température négative -
#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
assert (Temperature >= 0),"Colder than absolute zero!"
return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -
32.0
451
Traceback (most recent call last):
File "test.py", line 9, in <module>
print KelvinToFahrenheit(-5)
File "test.py", line 4, in KelvinToFahrenheit
assert (Temperature >= 0),"Colder than absolute zero!"
AssertionError: Colder than absolute zero!