nose的assert_raises功能在哪里?

时间:2012-05-23 08:47:17

标签: python nose

我使用nose 1.1.2为Python项目编写测试。这个assert_raises函数恰好在文档中提到,但我无法在任何地方找到它。

这应该是这样的简写:

value_error_raised = False
try:
    do_something_that_should_raise_value_error()
except ValueError:
    value_error_raised = True
assert value_error_raised

type_error_raised = False
try:
    do_something_else_that_should_raise_type_error()
except TypeError:
    type_error_raised = True
assert type_error_raised

将成为:

assert_raises(ValueError,
              do_something_that_should_raise_value_error)

assert_raises(TypeError,
              do_something_else_that_should_raise_type_error)

我已经搜索了源代码,我发现的唯一提法是在raises文档中的tools.py模块中:

  

如果要在单个测试中测试许多关于异常的断言,可能需要使用assert_raises

这个功能是从鼻子上移除的吗?如果是这样,有人可以帮助我理解为什么吗?

3 个答案:

答案 0 :(得分:7)

>>> from nose.tools import assert_raises
>>> assert_raises
<bound method Dummy.assertRaises of <nose.tools.Dummy testMethod=nop>>
>>> import nose
>>> nose.__version__
'1.1.2'

我个人使用带有nosetests的unittest2.TestCase类,并使用self.assertRaises。

答案 1 :(得分:5)

在测试功能上使用@raises(*exceptions)装饰器。

答案 2 :(得分:1)

这个答案适用于您无法找到有关assert_raises的信息的原因。

来自nose documentation

  

nose.tools模块提供了在unittest.TestCase中找到的所有相同的assertX方法(仅以PEP 8方式拼写,所以assert_equal而不是assertEqual)

以下是Python基础文档中的PEP 8's suggested function naminglist of assertX methods