Python自动单元测试框架

豆豆网   技术应用频道   2007年03月30日  【字号: 收藏本文

本文详细介绍Python自动单元测试框架

  这样只需要在suite()方法中返回该类的一个实例就可以了:

  def suite():
  return WidgetTestSuite()

  如果用于测试的类中所有的测试方法都以test开,Python程序员甚至可以用PyUnit模块提供的makeSuite()方法来构造一个TestSuite:

  def suite():
  return unittest.makeSuite(WidgetTestCase, "test")

  在PyUnit测试框架中,TestSuite类可以看成是TestCase类的一个容器,用来对多个测试用例进行组织,这样多个测试用例可以自动在一次测试中全部完成。事实上,TestSuite除了可以包含TestCase外,也可以包含TestSuite,从而可以构成一个更加庞大的测试用例集:

suite1 = mysuite1.TheTestSuite()
suite2 = mysuite2.TheTestSuite()
alltests = unittest.TestSuite((suite1, suite2))

  3.4 实施测试

  编写测试用例(TestCase)并将它们组织成测试用例集(TestSuite)的最终目的只有一个:实施测试并获得最终结果。PyUnit使用TestRunner类作为测试用例的基本执行环境,来驱动整个单元测试过程。Python开发人员在进行单元测试时一般不直接使用TestRunner类,而是使用其子类TextTestRunner来完成测试,并将测试结果以文本方式显示出来:

runner = unittest.TextTestRunner()
runner.run(suite)

  使用TestRunner来实施测试的例子如例7所示,

  例7. text_runner.py
from widget import Widget
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))    
# 测试
if __name__ == "__main__":
  # 构造测试集
  suite = unittest.TestSuite()
  suite.addTest(WidgetTestCase("testSize"))
  suite.addTest(WidgetTestCase("testResize"))
  
  # 执行测试
  runner = unittest.TextTestRunner()
  runner.run(suite)

责编:豆豆技术应用

正在加载评论...