一,基本概念
- TestCase:所有測試用例的基類
- TestLoad:加載測試用例,返回TestSuite(測試套件)
- TestSuite:創建測試套件
- TextTestRunner:運行測試用例
- TextTestResult:測試結果(包含 運行多少,錯誤多少,失敗多少)
二,創建測試用例類
- 必須繼承TestCase
- 測試用例的名字必須以test開頭
- 定義setUp和tearDown,在每個測試用例前后做一些輔助工作。
- 一個測試用例應該只測試一個方面,測試目的和測試內容應很明確。主要是調用assertEqual、assertRaises等斷言方法判斷程序執行結果和預期值是否相符。
- 調用unittest.main()啟動自動測試
- 如果測試未通過,會輸出相應的錯誤提示。如果測試全部通過則不顯示任何東西,這時可以添加-v參數顯示詳細信息。
三,有選擇的測試
unittest.skip(reason)
unittest.skipIf(condition, reason)
unittest.skipUnless(condition, reason)
unittest.expectedFailure()
# coding=utf-8
class testclass:
def sum(self , x, y):
return x + y
def sub(self , x, y):
return x - y
#coding=utf-8
import unittest
from myclass import myclass
class simpleTest(unittest.TestCase):
def setUp(self):
print 'start test.....'
self.tclass=myclass.testclass()
def tearDown(self):
print 'end test.....'
def testsum(self):
self.assertEqual(self.tclass.sum(1, 2),3,'sum test fail')
def testsub(self):
self.assertEqual(self.tclass.sub(2, 1),1, 'sub test fail')
if __name__ == '__main__':
# suite=unittest.TestLoader().loadTestsFromTestCase(simpleTest)
# unittest.TextTestRunner.verbosity(2).run(suite)
for key in dir(unittest):#查看該模塊所有類
print key
unittest.main()
#coding=utf-8
import sys
import unittest
from myclass import myclass
#測試模塊中某一個類中的函數
#定義兩個測試用例
class mytest(unittest.TestCase):
def setUp(self):
self.tclass=myclass.testclass()
def tearDown(self):
pass
@unittest.skip("skipping")
def testsum(self):
self.assertEqual(self.tclass.sum(1, 2),3,'test sum fail')
@unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
def testsub(self):
self.assertEqual(self.tclass.sub(2, 1),1,'test sum fail')
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(mytest)#構建測試套件
# suite = unittest.TestSuite([suite1, suite2]) 可以添加多個套件
result= unittest.TextTestRunner(verbosity=2).run(suite)
print result