5

我正在使用鼻子 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)

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

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

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

4

3 回答 3

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'

我个人将 unittest2.TestCase 类与鼻子测试一起使用,并使用 self.assertRaises。

于 2012-05-23T08:58:56.290 回答
5

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

于 2012-05-23T08:49:18.523 回答
1

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

鼻子文档

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

以下是PEP 8 建议的函数命名和Python 基础文档中的assertX方法列表。

于 2013-07-25T08:45:23.990 回答