我使用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
。
这个功能是从鼻子上移除的吗?如果是这样,有人可以帮助我理解为什么吗?
答案 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.tools模块提供了在unittest.TestCase中找到的所有相同的assertX方法(仅以PEP 8方式拼写,所以assert_equal而不是assertEqual)
以下是Python基础文档中的PEP 8's suggested function naming和list of assertX methods。