我搜索过的文件,但找不到任何。 有一个是没有太多解释情侣。
谁能给我解释一下鼻子的
assert_raises(what should I put here?)
功能以及如何使用它?
我搜索过的文件,但找不到任何。 有一个是没有太多解释情侣。
谁能给我解释一下鼻子的
assert_raises(what should I put here?)
功能以及如何使用它?
该assert_raises()
函数的测试,以当某些参数呈现一定的函数调用引发指定异常。
举例来说,如果你有一个功能add
,增加了两个数字,它或许应该提出一个TypeError
时,你通过它,说,一个整数和一个字符串。 所以:
from nose.tools import assert_raises
def add(x, y):
return x + y
assert_raises(TypeError, add, 2, "0")
第一个参数是你期望的异常类型。 二是要调用的函数。 的参数的其余部分将被传递给函数(在这种情况下,他们将成为x
和y
在函数内部)。
如果预期的异常是由函数提出,断言通过。
虽然接受的答案是正确的,我认为这是一个更好的利用到assert_raises
方法。
如果你只是想断言,发生异常时,它可能更简单和更清洁的使用@raises
语法。
@raises(HTTPError)
def test_exception_is_raised:
call_your_method(p1, p2)
但是,假设你要与引发的异常位做多,例如:我们需要断言提出HTTPError是401型:未经授权 ,而不是500:服务器错误 。
在上面的语法这样的情况是不是有帮助的,我们应该用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!')