bingtuag 发表于 2017-4-25 07:00:50

Python自动单元测试实例

  Pythonunittest模块的相关用法
  待测源码类:widget.py
  #!/usr/bin/env pythonclass Widget:def __init__(self, size = (40, 40)):self._size = sizedef getSize(self):return self._sizedef resize(self, width, height):if width == 0or height < 0:raise ValueError, "illegal size"self._size = (width, height)def dispose(self):pass
  测试代码类:widget_unittest.py
  #!/usr/bin/env pythonimport sysimport unittestfrom widget import Widgetclass WidgetTestCase(unittest.TestCase):def setUp(self):self.widget = Widget()      def tearDown(self):self.widget = Nonedef testSize(self):self.assertEqual(self.widget.getSize(), (40, 40))def testReSize(self):self.widget.resize(20,30)self.assertEqual(self.widget.getSize(), (20, 30))def suite():suite = unittest.TestSuite()suite.addTest(WidgetTestCase("testSize"))suite.addTest(WidgetTestCase("testReSize"))return suiteif __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
  $ python widget_unittest.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
  OK
  动态方法不再覆盖runTest()方法,而是为测试类编写多个测试方法(按习惯这些方法通常以test开头),在创建TestCase子类的实例时必须给出测试方法的名称,来为PyUnit测试框架指明运行该测试用例时究竟应该调用测试类中的哪个方法.
  如果用于测试的类中所有的测试方法都以test开,Python程序员甚至可以用PyUnit模块提供的makeSuite()方法来构造一个TestSuite:
  defsuite():
returnunittest.makeSuite(WidgetTestCase,"test")
页: [1]
查看完整版本: Python自动单元测试实例