我搜寻了相关文档,但没有找到什么有用的信息。有一些文档并没有提供太多解释。请问有人可以解释一下Nose的相关内容吗?
assert_raises(what should I put here?)
什么是函数以及如何使用它?
虽然被接受的答案是正确的,但我认为 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!')
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
)。
如果函数引发了期望的异常,则断言通过。
help(assert_rases)
。 - kindallpydoc nose.tools
将会展示给你手册。 :D - Shiplu Mokaddim