unittest是python單元測試框架,又叫作PyUnit。html
之因此稱爲框架是它代替開發人員完成了一些調用、IO等與單元測試無直接關係的支撐代碼,讓開發人員能夠專一與測試用例的編寫,簡化單元測試工做。python
單元測試是一種基本的,由開發人員(而不是測試人員)完成的測試,保證一個程序基本單元的正確性。單元的概念我我的理解就相似電子設備中的元器件,一個個元器件(單元)組成了整個電子設備(程序)。而元器件的功能是單一的、肯定的,能夠在電子設備未徹底成型(程序未徹底實現)以前對其正確性進行測試(即單元測試)。同時,這些元器件是獨立的,能夠方便的更換(高內聚,低耦合,能夠任意重構)。因此單元測試是測試驅動開發、極限編程、敏捷中的重要概念。linux
一個簡單的例子:編程
#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()
執行python utest.py -vbash
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 unittestide
2.定義一個繼承自unittest.TestCase的測試用例類單元測試
3.定義setUp和tearDown,在每一個測試用例先後作一些輔助工做。測試
4.定義測試用例,名字以test開頭。htm
5.一個測試用例應該只測試一個方面,測試目的和測試內容應很明確。主要是調用assertEqual、assertRaises等斷言方法判斷程序執行結果和預期值是否相符。
6.調用unittest.main()啓動測試
7.若是測試未經過,會輸出相應的錯誤提示。若是測試所有經過則不顯示任何東西,這時能夠添加-v參數顯示詳細信息。
參考
[1]http://docs.python.org/release/2.6.8/library/unittest.html
[2]http://www.ibm.com/developerworks/cn/linux/l-pyunit/index.html