Python自动单元测试框架
2007-03-30 12:28:08 来源:WEB开发网核心提示: testCase = WidgetTestCase()一个测试用例通常只对软件模块中的一个方法进行测试,采用覆盖runTest()方法来构造测试用例在PyUnit中称为静态方法,Python自动单元测试框架(6),如果要对同一个软件模块中的多个方法进行测试,通常需要构造多个执行测试的类,只
testCase = WidgetTestCase()
一个测试用例通常只对软件模块中的一个方法进行测试,采用覆盖runTest()方法来构造测试用例在PyUnit中称为静态方法,如果要对同一个软件模块中的多个方法进行测试,通常需要构造多个执行测试的类,如例5所示:
例5. static_multi.py
import unittest
# 测试getSize()方法的测试用例
class WidgetSizeTestCase(unittest.TestCase):
def runTest(self):
widget = Widget()
self.assertEqual(widget.getSize(), (40, 40))
# 测试resize()方法的测试用例
class WidgetResizeTestCase(unittest.TestCase):
def runTest(self):
widget = Widget()
widget.resize(100, 100)
self.assertEqual(widget.getSize(), (100, 100))
采用静态方法,Python程序员不得不为每个要测试的方法编写一个测试类(该类通过覆盖runTest()方法来执行测试),并在每一个测试类中生成一个待测试的对象。在为同一个软件模块编写测试用例时,很多时候待测对象有着相同的初始状态,因此采用上述方法的Python程序员不得不在每个测试类中为待测对象进行同样的初始化工作,而这往往是一项费时且枯燥的工作。
一种更好的解决办法是采用PyUnit提供的动态方法,只编写一个测试类来完成对整个软件模块的测试,这样对象的初始化工作可以在setUp()方法中完成,而资源的释放则可以在tearDown()方法中完成,如例6所示:
例6. dynamic.py
import unittest
# 执行测试的类
class WidgetTestCase(unittest.TestCase):
def setUp(self):
self.widget = Widget()
def tearDown(self):
self.widget.dispose()
self.widget = None
def testSize(self):
self.assertEqual(self.widget.getSize(), (40, 40))
def testResize(self):
self.widget.resize(100, 100)
self.assertEqual(self.widget.getSize(), (100, 100))
更多精彩
赞助商链接