转自:http://blog.csdn.net/ithomer/article/details/5969842
2010-10-27 17:45 3886人阅读 评论(0)
Python unittest模块的相关用法
待测源码类:widget.py
#!/usr/bin/env python
classWidget:
def__init__(self, size = (40,40)):
self._size = size
defgetSize(self):
returnself._size
defresize(self, width, height):
ifwidth ==0orheight <0:
raiseValueError,"illegal size"
self._size = (width, height)
defdispose(self):
pass
测试代码类:widget_unittest.py
#!/usr/bin/env python
importsys
importunittest
fromwidgetimportWidget
classWidgetTestCase(unittest.TestCase):
defsetUp(self):
self.widget = Widget()
deftearDown(self):
self.widget =None
deftestSize(self):
self.assertEqual(self.widget.getSize(), (40,40))
deftestReSize(self):
self.widget.resize(20,30)
self.assertEqual(self.widget.getSize(), (20,30))
defsuite():
suite = unittest.TestSuite()
suite.addTest(WidgetTestCase("testSize"))
suite.addTest(WidgetTestCase("testReSize"))
returnsuite
if__name__ =="__main__":
unittest.TextTestRunner().run(suite())
# If you use IDE to execute test script in an external console,
# uncomment following code line.
# while True
# if raw_input("Type y or Y to close!") in ("y","Y"): sys.exit(0)
运行结果:python widget_unittest.py
[work@db-testing-com06-vm3.db01.baidu.com test]$ python widget_unittest.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
动态方法不再覆盖runTest()方法,而是为测试类编写多个测试方法(按习惯这些方法通常以test开头),在创建TestCase子类的实例时必须给出测试方法的名称,来为PyUnit测试框架指明运行该测试用例时究竟应该调用测试类中的哪个方法.
如果用于测试的类中所有的测试方法都以test开,Python程序员甚至可以用PyUnit模块提供的makeSuite()方法来构造一个TestSuite:
def suite():
return unittest.makeSuite(WidgetTestCase, "test")