一、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')