qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

          python單元測試

          unittest是python單元測試框架,又叫做PyUnit。

            之所以稱為框架是它代替開發(fā)人員完成了一些調(diào)用、IO等與單元測試無直接關(guān)系的支撐代碼,讓開發(fā)人員可以專注與測試用例的編寫,簡化單元測試工作

            單元測試是一種基本的,由開發(fā)人員(而不是測試人員)完成的測試,保證一個程序基本單元的正確性。“單元”的概念我個人理解就類似電子設(shè)備中的元器件,一個個元器件(單元)組成了整個電子設(shè)備(程序)。而元器件的功能是單一的、確定的,可以在電子設(shè)備未完全成型(程序未完全實(shí)現(xiàn))之前對其正確性進(jìn)行測試(即單元測試)。同時,這些元器件是獨(dú)立的,可以方便的更換(高內(nèi)聚,低耦合,可以任意重構(gòu)——只要滿足前面的單元測試)。所以單元測試是測試驅(qū)動開發(fā)、極限編程、敏捷中的重要概念。

            一個簡單的例子:

          #FileName: ut_target.py
          class EqualToZero(Exception): pass
          class SplitZero(object):
          def splitzero(self, num):
          if num > 0:
          return "num is bigger than zero"
          elif num < 0:
          return "num is smaller than zero"
          else:
          raise EqualToZero
          #FileName: utest.py
          from ut_target import SplitZero, EqualToZero
          import unittest
          class SzTestCase(unittest.TestCase):
          def setUp(self):
          print "test start"
          def tearDown(self):
          print "test stop"
          def testSzBig(self):
          num = 10
          sz = SplitZero()
          self.assertEqual(sz.splitzero(num),
          "num is bigger than zero")
          def testSzSmall(self):
          num = -10
          sz = SplitZero()
          self.assertEqual(sz.splitzero(num),
          "num is smaller than zero")
          def testSzEqual(self):
          num = 0
          sz = SplitZero()
          self.assertRaises(EqualToZero, sz.splitzero, num)
          if __name__ == "__main__":
          unittest.main()
          執(zhí)行python utest.py -v
          testSzBig (__main__.SzTestCase) ... test start
          test stop
          ok
          testSzEqual (__main__.SzTestCase) ... test start
          test stop
          ok
          testSzSmall (__main__.SzTestCase) ... test start
          test stop
          ok
          ----------------------------------------------------------------------
          Ran 3 tests in 0.000s
          OK

            unittest基本使用方法

            1.import unittest

            2.定義一個繼承自unittest.TestCase的測試用例類

            3.定義setUp和tearDown,在每個測試用例前后做一些輔助工作。

            4.定義測試用例,名字以test開頭。

            5.一個測試用例應(yīng)該只測試一個方面,測試目的和測試內(nèi)容應(yīng)很明確。主要是調(diào)用assertEqual、assertRaises等斷言方法判斷程序執(zhí)行結(jié)果和預(yù)期值是否相符。

            6.調(diào)用unittest.main()啟動測試

            7.如果測試未通過,會輸出相應(yīng)的錯誤提示。如果測試全部通過則不顯示任何東西,這時可以添加-v參數(shù)顯示詳細(xì)信息。

          posted on 2013-07-25 10:36 順其自然EVO 閱讀(257) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2013年7月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 佛山市| 农安县| 韶关市| 乌拉特中旗| 和平区| 中山市| 洪泽县| 喀什市| 仙桃市| 浠水县| 独山县| 夏河县| 新昌县| 兴国县| 桃源县| 曲水县| 灯塔市| 麻城市| 福安市| 县级市| 三江| 宜兰县| 惠州市| 寿宁县| 卢龙县| 克拉玛依市| 黄梅县| 南投县| 东明县| 横峰县| 综艺| 滨海县| 靖边县| 锡林郭勒盟| 余姚市| 会同县| 于都县| 汨罗市| 广灵县| 双鸭山市| 留坝县|