5.在unittest中复用旧的测试代码

一些用户可能会发现他们有想要使用unittest运行的测试代码,但是旧的测试函数都没有使用TestCase类重写。

为了解决这个问题,unittest提供了一个FunctionTestCase类。这个TestCase的子类可用于包装现有的测试函数,并且也提供了创建和销毁的功能。

现有下面的测试函数:

def testSomething():
  something = makeSomething()
  assert something.name is not None
  # ...

使用可选的创建和销毁方法可以创建一个等效的测试用例实例,如下所示:

testcase = unittest.FunctionTestCase(testSomething, 
                                     setUp=makeSomethingDB, 
                                     tearDown=deleteSomethingDB)

小贴士:
虽然使用FunctionTestCase类可以快速地将现有测试库转换为基于unittest系统的测试,但是这个方法是不推荐的。花时间去建立对应的TestCase子类将会使未来的测试重构更加容易。

如果现有的测试是使用doctest模块编写的,那么很容易将它使用在unittest系统中。doctest提供了一个DocTestSuite类,这个类可以从现有的基于doctest的测试中自动构建unittest.TestCase用例。

你可能感兴趣的:(5.在unittest中复用旧的测试代码)