2024-06-18 13:11:04 发布
网友
我找了些文件,但找不到。有一对没怎么解释。
有人能给我解释一下鼻子的
assert_raises(what should I put here?)
功能及使用方法?
虽然接受的答案是正确的,但我认为有更好的方法来使用assert_raises。
assert_raises
如果您只想断言发生了异常,那么使用@raises语法可能更简单、更干净。
@raises
@raises(HTTPError) def test_exception_is_raised: call_your_method(p1, p2)
但是,假设您希望对引发的异常执行更多操作,例如:我们需要断言引发的HTTPError的类型是401:Unauthorized,而不是500:Server Error。
在这种情况下,上面的语法没有那么大帮助,我们应该使用assert_raises,但是使用的方式不同。 如果我们不将其作为第二个参数传递callable,那么assert_raises将返回一个上下文,我们可以使用该上下文进一步测试异常详细信息。
callable
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()测试以确保函数调用在出现某些参数时引发指定的异常。
assert_raises()
例如,如果有一个函数add添加了两个数字,那么当传递它时,它可能会引发一个TypeError,比如一个整数和一个字符串。所以:
add
TypeError
from nose.tools import assert_raises def add(x, y): return x + y assert_raises(TypeError, add, 2, "0")
第一个参数是预期的异常类型。第二个是要调用的函数。其余的参数将传递给函数(在本例中,它们将成为函数中的x和y)。
x
y
如果函数引发了预期的异常,则断言将通过。
虽然接受的答案是正确的,但我认为有更好的方法来使用
assert_raises
。如果您只想断言发生了异常,那么使用
@raises
语法可能更简单、更干净。但是,假设您希望对引发的异常执行更多操作,例如:我们需要断言引发的HTTPError的类型是401:Unauthorized,而不是500:Server Error。
在这种情况下,上面的语法没有那么大帮助,我们应该使用
assert_raises
,但是使用的方式不同。 如果我们不将其作为第二个参数传递callable
,那么assert_raises
将返回一个上下文,我们可以使用该上下文进一步测试异常详细信息。函数
assert_raises()
测试以确保函数调用在出现某些参数时引发指定的异常。例如,如果有一个函数
add
添加了两个数字,那么当传递它时,它可能会引发一个TypeError
,比如一个整数和一个字符串。所以:第一个参数是预期的异常类型。第二个是要调用的函数。其余的参数将传递给函数(在本例中,它们将成为函数中的
x
和y
)。如果函数引发了预期的异常,则断言将通过。
相关问题 更多 >
编程相关推荐