一、unittest的常見語句
-
assertEqual(a, b) 判斷:a == b
-
assertNotEqual(a, b) 判斷: a != b
-
assertTrue(x) bool(x) is True
-
assertFalse(x) bool(x) is False
-
assertIs(a, b) a is b
assertIsNot(a, b) a is not b
assertIsNone(x) x is none
assertIsNotNone(x) x is not none
assertIn(a, b) a in b
assertNotIn(a, b) a is not b
assertIsInstance(a, b)
assertNotIsInstance(a, b) not isinstance(a, b) -
assertGreater(a, b) a>b
-
assertGreaterEqual(a, b) a >= b
-
assertLess(a, b) a < b
-
assertLessEqual(a, b) a <= b
二、unittest重寫和套件
2.1 runtest方法。 2.2 test開頭
import unittest 2.1方式一:重寫 runtest()方法 # class ReWrite(unittest.TestCase): #創建子類繼承父類 # def runTest(self): #創建runtest方法,每個類中只能寫一條 # print('重寫') # # def runTest02(self): # 這條無效,不會被執行 # print('重寫2') 2.2方式二:重寫 以test開頭 class login(unittest.TestCase): def test01(self): self.assertIsInstance(23.1,float) print('test01') def test02(self): self.assertGreater(2,1,'前個值大於后一個值') print('test02') def test03(self): self.assertIs(1,1,'兩值相等') print('test03')<部分一>
2.3測試套件 方式一:通過addtest添加case,其中case可以不用test開頭。只執行添加的case
………………復制<部分一> if __name__=='__main__':
login_suite = unittest.TestSuite() #用unittest.TestSuite實例化測試套件對象 login_suite.addTest(login('test01')) #使用addtest添加case, 類(方法) login_suite.addTest(login('test02')) unittest.main(defaultTest='login_suite') #執行測試套件對象 字符串格式 ’測試套件對象‘

2.4測試套件:方式二(通過makeSuite添加以test開頭的case) 執行套件所有case
………………復制<部分一>
if __name__=='__main__': login_suite = unittest.TestSuite(unittest.makeSuite(login)) #用unittest.TestSuite實例化測試套件對象,makeSuite添加類 unittest.main(defaultTest='login_suite') #執行套件所有case
三、加載並執行測試用例
unittest 提供一個TestLoader類用於自動創建一個測試集,並將單個測試用例放到測試集中。TestLoader自動運行以test開頭的測試方法。
3.1 增加類下的所有用例
loadTestsFromTestCase
load_suite =unittest.TestSuite(unittest.makeSuite(login))
import unittest class login(unittest.TestCase): def test01(self): self.assertIsInstance(23.1,float) print('test01') def test02(self): self.assertGreater(2,1,'前個值大於后一個值') print('test02') def test03(self): self.assertIs(1,1,'兩值相等') print('test03') #loadTestsFromTestCase 增加類下的所有用例 if __name__=='__main__': load_suite = unittest.TestLoader().loadTestsFromTestCase(login) 方法一
load_suite =unittest.TestSuite(unittest.makeSuite(login)) 方法二 unittest.main(defaultTest='load_suite')

3.2 增加模塊下的所有用例
import unittest import demo_01 #注意:要執行本模塊的用例,需導入該模塊 class login(unittest.TestCase): def test01(self): self.assertIsInstance(23.1,float) print('test01') def test02(self): self.assertGreater(2,1,'前個值大於后一個值') print('test02') def test03(self): self.assertIs(1,1,'兩值相等') print('test03') class login02(unittest.TestCase): def test04(self): self.assertIsInstance(23.1,float) print('test04') def test05(self): self.assertGreater(2,1,'前個值大於后一個值') print('test05') def test06(self): self.assertIs(1,1,'兩值相等') print('test06') #增加模塊下的所有用例 if __name__=='__main__': loadmodule_suite = unittest.TestLoader().loadTestsFromModule(demo_01) #⚠️導入本模塊 unittest.main(defaultTest='loadmodule_suite')

3.3 使用字符串的方式加載用例
import unittest import demo_01 #注意:要執行本模塊的用例,需導入該模塊 class login(unittest.TestCase): def test01(self): self.assertIsInstance(23.1,float) print('test01') def test02(self): self.assertGreater(2,1,'前個值大於后一個值') print('test02') def test03(self): self.assertIs(1,1,'兩值相等') print('test03') class login02(unittest.TestCase): def test04(self): self.assertIsInstance(23.1,float) print('test04') def test05(self): self.assertGreater(2,1,'前個值大於后一個值') print('test05') def test06(self): self.assertIs(1,1,'兩值相等') print('test06') #使用字符串的方式加載用例 if __name__=='__main__': load_suite = unittest.TestLoader().loadTestsFromName('demo_01.login02') #⚠️導入本模塊 unittest.main(defaultTest='loadmodule_suite')

3.4 組合兩個模塊下,不同類的case
import unittest import demo_01 import unit_test suite01 =unittest.TestLoader().loadTestsFromName('demo_01.login.test02') #'模塊1名.類名.方法名' suite02 =unittest.TestLoader().loadTestsFromName('unit_test.TestDemo.test_notequal') #'模塊2名.類名.方法名' main_suite =unittest.TestSuite() main_suite.addTests(suite01) main_suite.addTests(suite02) unittest.main(defaultTest='main_suite')