unittest框架
一、unittest
import unittest def add(a,b): return a+b #继承unittest.TestCase类 class TestCase01(unittest.TestCase): #在每条用例执行前执行 def setUp(self): print("setUp") #在每条用例执行后执行 def tearDown(self): print("tearDown") #方法名必须以test开头 def testcase_01(self): print("testcase_01") print("1 + 1 = ",add(1,1)) self.assertEqual(2, add(1, 2)) def testcase_02(self): print("testcase_02") print("2 + 2 = ", add(2, 2)) def testcase_03(self): print("testcase_03") print("3 + 3 = ", add(3, 3)) class TestCase02(unittest.TestCase): #方法名必须以test开头 def testcase_01(self): print("TestCase02_testcase_01") def testcase_02(self): print("TestCase02_testcase_02") def testcase_03(self): print("TestCase02_testcase_03") if __name__ == '__main__': unittest.main()
光标放在class上就执行class里面的全部方法,如果放在testcase_01上,就两个都执行,放在testcase_02上就只执行testcase_02
二、TestSuite
(1)以测试用例类里的每个方法为单位添加
import unittest from demo01 import TestCase01, TestCase02 suite = unittest.TestSuite() suite.addTest(TestCase01("testcase_01")) suite.addTest(TestCase01("testcase_02")) suite.addTest(TestCase01("testcase_03")) suite.addTest(TestCase02("testcase_01")) suite.addTest(TestCase02("testcase_02")) suite.addTest(TestCase02("testcase_03")) runner = unittest.TextTestRunner() runner.run(suite)
(2)以测试用例类为单位添加
import unittest from demo01 import TestCase01, TestCase02 suite = unittest.TestSuite() #以测试用例类为单位添加 suite.addTest(unittest.makeSuite(TestCase01)) suite.addTest(unittest.makeSuite(TestCase02)) runner = unittest.TextTestRunner() runner.run(suite)
三、TestRunner
四、defaultTestLoader
import unittest #test_dir为要指定的目录 ./为当前目录;pattern:为查找的.py文件的格式(只运行test开头的方法) discover = unittest.defaultTestLoader.discover(r"D:\demo\reptile_demo\case",pattern='test*.py') #查找所有case文件夹下test开头的py文件 runner = unittest.TextTestRunner() runner.run(discover)