例子:
import unittest
import random
class MyTest(unittest.TestCase):
def setUp(self):
self.num = range(10)
def testramdow(self):
self.assertTrue(random.choice(self.num)in self.num)
def test1(self):
num1 = random.choice(self.num)
nun2 = random.choice(self.num)
self.assertEqual(num1,nun2)
def test2(self):
num1 =random.choice(self.num)
self.assertTrue(num1<10)
if name == ‘main’:
suite = unittest.TestSuite()
suite.addTest(MyTest(“test1”))
suite.addTest(MyTest(“test2”))
suite.addTest(MyTest(“testramdow”))
unittest.TextTestRunner(verbosity=3).run(suite)
- 首先是導入unittest 模塊 沒有自行去pip install unittest
- MyTest類繼承自unittest.TestCase
- setup用來初始化數據,只會運行一次
- 每一個以test開頭的方法,都會爲其構建TestCase對象,使用unittest.main方法執行函數;所以再寫測試用例的時候一定是以test開頭
- TestSuite’:組織測試用例的實例,支持測試用例的添加和刪除,最終將傳遞給testRunner進行測試執行
- self.assertTrue(表達式, failedinfo) # 斷言value爲真
- self.assertFalse(表達式, failedinfo) # 斷言value爲假
- self.assertEqual(value1, value2, failedinfo) # 斷言value1 == value2
- unittest.TextTestRunner(verbosity=2).run(suite)運行用例,TextTestRunner類將用例執行的結果以text形式輸出,verbosity默認值爲1,不限制完整結果,即單個用例成功輸出’.’,失敗輸出’F’,錯誤輸出’E’;verbosity=2將輸出完整的信息,verbosity=2是指測試結果的輸出的詳細程度,有0-6級,具體代碼實現可看Python27\Lib\unittest\runner.py源代碼
1.unittest.suite(),創建一個測試套件,suite.addTest()添加單個用例到測試套件中,需要把每一個要執行的用例都添加一遍,unittest.TextTestRunner().run()執行測試測試套件的所有用例;
我們也可以用addTests()方法添加多個測試用例,用makesuite(),搜索所有測試用例添加到測試套件,如下:只是main()方法下面的方法修改下即可
#定義一個測試套件
suite=unittest.TestSuite()
#添加測試用例
#添加單個測試用例
suite.addTests(unittest.makeSuite(MyTest))
unittest.TextTestRunner(verbosity=2).run(suite)