nose.tools模块提供了需要有用的测试帮助,包括约束测试执行时间和异常的修饰,所有的unittest.TestCase中提供的assertX方法(仅以PEP 8#function-names风格拼写,因此是assert_equal,而不是assertEqual)。
测试工具
nose.tools提供了许多便利的函数,它们让编写用例变得更加简单。你并不是必须要使用它们,nose并不是依赖这些方法。
nose.tools.ok_(expr, msg=None)
assert断言.保存3个完整的字符!
nose.tools.eq_(a, b, msg=None)
assert ‘a== b,“ %r != %r”%(a, b)’
nose.tools.make_decorator(func)
装饰测试例的装饰器,以便恰当的复制被装饰函数的元数据,包括nose的额外数据(也就是类似于setup和teardown)
nose.tools.raises(*exceptions)
测试例必须抛出期待的exceptions才被认为是pass。
比如:
@raises(TypeError, ValueError)
def test_raises_type_error():
raise TypeError("This test passes")
@raises(Exception)
def test_that_fails_by_passing():
pass
如果你想要在一个测试例中测试一系列关于断言的异常,可以使用assert_raises代替。
nose.tools.set_trace()
调用可调用frame中的pdb.set_trace(),首先恢复sys.stdout到真实输出流。注意,在pdb完成之前,sys.stdout不会被重新设置成任何东西。
nose.tools.timed(limit)
测试必须在limit限制的时间内完成才算是pass。
例如:
@timed(.1)
def test_that_fails():
time.sleep(.2)
nose.tools.with_setup(setup=None, teardown=None)
为测试函数添加setup和teardown
@with_setup(setup, teardown)
def test_something():
" ... "
注意,with_setup函数仅仅用于一个测试函数,并不适用于TestCase子类中的测试方法。
nose.tools.istest(func)
将一个函数或方法装饰成测试例
nose.tools.notest(func)
将一个函数或方法装饰成不是测试例