Unittest Framework 简明教程

Nose Testing - Tools

nose.tools 模块提供了一些您可能发现有用的测试辅助工具,包括用于限制测试执行时间和测试异常的装饰器,以及 unittets.TestCase 中的所有同类 assertX 方法。

  1. nose.tools.ok_(expr, msg = None) − assert 的速记。

  2. nose.tools.eq_(a, b, msg = None) − “assert a == b, “%r != %r” % (a, b)”的速记

  3. nose.tools.make_decorator(func) − 封装测试装饰器,以便正确复制所装饰函数的元数据信息,包括 nose 的附加信息(即,setup 和 teardown)。

  4. nose.tools.raises(*exceptions) − 测试必须引发某个预期异常才能通过。

  5. nose.tools.timed(limit) − 测试必须在指定的时间限制内完成才能通过

  6. nose.tools.istest(func) − 将函数或方法标记为测试的装饰器

  7. nose.tools.nottest(func) − 将函数或方法标记为非测试的装饰器

Parameterized Testing

Python 的测试框架 unittest 没有一个简单的方法来运行参数化测试用例。换句话说,您无法轻松从外部向 unittest.TestCase 传递参数。

然而,pytest 模块通过几种完全集成的途径实现测试参数传递 −

  1. pytest.fixture() 允许您在 fixture 函数级别定义参数传递。

  2. @pytest.mark.parametrize 允许在函数或类级别定义参数传递。它为特定的测试函数或类提供多个参数/fixture。

  3. pytest_generate_tests 使您能够实现自己的自定义动态参数传递方案或扩展。

第三方模块“nose-parameterized”允许对任何 Python 测试框架进行参数化测试。可以从以下链接下载它 − https://github.com/wolever/nose-parameterized