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