J'ai cherché de la documentation, mais je n'en ai pas trouvé. Il y en avait un couple qui n'expliquait pas grand-chose.
Quelqu'un peut-il m'expliquer le nez
assert_raises(what should I put here?)
fonction et comment l'utiliser?
La fonction assert_raises()
teste pour s'assurer qu'un appel de fonction déclenche une exception spécifiée lorsqu'il est présenté avec certains paramètres.
Par exemple, si vous aviez une fonction add
qui ajoute deux nombres, elle devrait probablement augmenter un TypeError
lorsque vous lui passez, disons, un entier et une chaîne. Donc:
from nose.tools import assert_raises
def add(x, y):
return x + y
assert_raises(TypeError, add, 2, "0")
Le premier argument est le type d'exception que vous attendez. La seconde est la fonction à appeler. Le reste des arguments sera transmis à la fonction (dans ce cas, ils deviendront x
et y
à l'intérieur de la fonction).
Si l'exception attendue est déclenchée par la fonction, l'assertion passe.
Bien que la réponse acceptée soit correcte, je pense qu'il y a une meilleure utilisation pour assert_raises
méthode.
Si vous voulez simplement affirmer qu'une exception se produit, il est probablement plus simple et plus propre d'utiliser @raises
syntaxe.
@raises(HTTPError)
def test_exception_is_raised:
call_your_method(p1, p2)
Cependant, supposons que vous souhaitiez faire un peu plus avec l'exception déclenchée, par exemple: nous devons affirmer que HTTPError déclenchée est de type 401: non autorisé, au lieu de 500: erreur du serveur =.
Dans une telle situation, la syntaxe ci-dessus n'est pas très utile, nous devons utiliser le assert_raises
mais d'une manière différente. Si on ne lui passe pas un callable
comme second paramètre assert_raises
renverra un contexte que nous pouvons utiliser pour tester davantage les détails de l'exception.
def test_exception_is_raised:
with assert_raises(HTTPError) as cm:
call_your_method(p1, p2)
ex = cm.exception # raised exception is available through exception property of context
ok_(ex.code == 401, 'HTTPError should be Unauthorized!')