ドキュメントを検索しましたが、見つかりませんでした。あまり説明しなかったカップルがいました。
誰かが私に鼻を説明できますか
assert_raises(what should I put here?)
機能と使用方法
assert_raises()
関数は、特定のパラメーターが指定されたときに、関数呼び出しが指定された例外を発生させることを確認するためにテストします。
たとえば、2つの数値を追加する関数add
がある場合、おそらく整数と文字列を渡すときにTypeError
を発生させる必要があります。そう:
from nose.tools import assert_raises
def add(x, y):
return x + y
assert_raises(TypeError, add, 2, "0")
最初の引数は、予想される例外タイプです。 2番目は呼び出す関数です。残りの引数は関数に渡されます(この場合、それらは関数内でx
およびy
になります)。
関数によって予期される例外が発生した場合、アサーションは成功します。
受け入れられた答えは正しいものの、assert_raises
メソッドを使用する方が良いと思います。
単に例外が発生したことを表明したい場合は、おそらく@raises
構文を使用する方が簡単で簡潔です。
@raises(HTTPError)
def test_exception_is_raised:
call_your_method(p1, p2)
ただし、発生した例外を使用してもう少しやりたい場合は、たとえば、発生したHTTPErrorのタイプが500:Server Errorではなく401:Unauthorizedであることをアサートする必要があります=。
このような状況では、上記の構文はあまり役に立ちません。assert_raises
を使用する必要がありますが、別の方法で使用する必要があります。 2番目のパラメーターとしてcallable
を渡さない場合、assert_raises
は、例外の詳細をさらにテストするために使用できるコンテキストを返します。
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!')