Python中unittest模块做UT(单元测试)使用实例

608次阅读  |  发布于5年以前

待测试的类(Widget.py)


    # Widget.py 
    # Python 2.7.6 

    class Widget: 
      def __init__(self, size = (40,40)): 
        self.size = size 
      def getSize(self): 
        return self.size 
      def reSize(self,width,height): 
        if width <0 or height < 0: 
          raise ValueError, 'illegal size' 
        else: 
          self.size = (width,height) 
          return self.size 
      def dispose(self): 
        pass 

测试类(Auto.py)


    # coding=utf8 
    # Auto.dy 
    # Python 2.7.6 

    from Widget import Widget #导入测试类模块Widget 
    import unittest      #导入unittest模块  


    class WidgetTestCase(unittest.TestCase): 
    #让所有执行测试的类都继承于TestCase类,可以将TestCase看成是对特定类进行测试的方法的集合 

      #在setUp()方法中进行测试前的初始化工作。 
      def setUp(self):   
        self.widget = Widget() 

      #并在tearDown()方法中执行测试后的清除工作,setUp()和tearDown()都是TestCase类中定义的方法。 
      def tearDown(self): 
        self.widget = None 

      #测试Widget类中getSize方法 
      def testgetSize(self): 
        print "Test GetSize" 
        #对Widget类中getSize()方法的返回值和预期值进行比较,确保两者是相等的, 
        #assertEqual()也是TestCase类中定义的方法。 
        self.assertEqual(self.widget.getSize(), (40, 40)) 

      #测试Widget类中reSize方法 
      def testreSize(self): 
        print "Test Resize" 
        #对Widget类中reSize()方法的返回值和预期值进行比较,确保两者是相等的。 
        #assertEqual()也是TestCase类中定义的方法。 
        self.assertEqual(self.widget.reSize(50,100),(50,100)) 


    #提供名为suite()的全局方法,PyUnit在执行测试的过程调用suit()方法来确定有多少个测试用例需要被执行, 
    #可以将TestSuite看成是包含所有测试用例的一个容器。 
    def suite(): 
      suite = unittest.TestSuite() 
      suite.addTest(WidgetTestCase("testgetSize"))#往此添加需要测试的方法testgetSize() 
      suite.addTest(WidgetTestCase("testreSize")) #往此添加需要测试的方法testreSize() 
      return suite  

    if __name__ == "__main__": 
      unittest.main(defaultTest = 'suite') #在主函数中调用全局方法. 

测试结果:


    D:\Python>python27 Auto.py 
    Test GetSize 
    .Test Resize 
    . 
    ------------------------------ 
    Ran 2 tests in 0.004s 

    OK 

总结:
1。第一步:先写好测试类
2。第二步:导入unittest模块及测试的类,运用setup()方法做测试前的准备工作,如建立数据库连接,运用teardown()方法做测试后的清除工作,如取消数据库的链接,再对类中的方法逐一做测试。
3。第三步: 写suite()的全局方法,将要测试的方法,一一加入。
测试结果,有几个测试用例就有几个. 最后显示OK,表示通过。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8