我搜索了文档,但找不到任何文档.有几个没有解释太多.
有人可以向我解释鼻子吗?
assert_raises(what should I put here?)
Run Code Online (Sandbox Code Playgroud)
功能以及如何使用它?
Bud*_*hiP 91
虽然接受的答案是正确的,但我认为方法有更好的用途assert_raises
.
如果您只是想声明发生异常,那么使用@raises
语法可能更简单,更清晰.
@raises(HTTPError)
def test_exception_is_raised:
call_your_method(p1, p2)
Run Code Online (Sandbox Code Playgroud)
但是,假设您希望对引发的异常执行更多操作,例如:我们需要声明引发的HTTPError类型为401:Unauthorized,而不是500:Server Error.
在这种情况下,上面的语法没有用,我们应该assert_raises
以不同的方式使用.如果我们不传递它,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!')
Run Code Online (Sandbox Code Playgroud)
kin*_*all 66
该assert_raises()
函数测试以确保函数调用在呈现某些参数时引发指定的异常.
例如,如果你有一个add
添加两个数字的函数,它应该TypeError
在你传递它时引发一个整数和一个字符串.所以:
from nose.tools import assert_raises
def add(x, y):
return x + y
assert_raises(TypeError, add, 2, "0")
Run Code Online (Sandbox Code Playgroud)
第一个参数是您期望的异常类型.第二个是呼叫功能.的参数的其余部分将被传递给函数(在这种情况下,他们将成为x
并且y
在函数内部).
如果函数引发了预期的异常,则断言通过.