unittest中的测试套件(TestSuite)、装载器(TestLoader、defaultTestLoader)和执行器(TextTestRunner)

在unittest中,我们可以借助测试套件和装载器来管理批量的测试用例,以便于按自己的需求来执行测试用例。

1、测试套件

TestSuite可以帮助我们很好的组织测试用例,常用的方法有addTest()和addTests(),详细用法如下:

# 导入unittest
import unittest
# 创建一个测试类
class myUnitTest(unittest.TestCase):
    # 创建测试用例
    def test_1(self):
        print(f"this is the first testcase")
    
    def test_2(self):
        print(f"this is the second testcase")
        
    def test_3(self):
        print(f"this is the third testcase")

    def test_4(self):
        print(f"this is the fourth testcase")

新建一个python脚本,使用套件和执行器

# 使用 addTest()方法
suite = unittest.TestSuite()  # 实例化一个测试套件
suite.addTest(myUnitTest("test_1")) # 加载测试用例
suite.addTest(myUnitTest("test_2"))
suite.addTest(myUnitTest("test_3"))

# 实例化一个执行器
runner = unittest.TextTestRunner()
runner.run(suite)
# 使用addTests()方法,它可以接收一个包含多个测试用例的容器
# 使用列表、元组和字典的区别是列表、元组是按顺序执行的,字典时无序执行的
import unittest
cases1 = [myUnitTest("test_1"),
          myUnitTest("test_2"),
          myUnitTest("test_3")
         ]
cases2 = (myUnitTest("test_1"),
          myUnitTest("test_2"),
          myUnitTest("test_3")
         )
cases3 = {myUnitTest("test_1"), 
          myUnitTest("test_2"),
          myUnitTest("test_3")
         }
suite = unittest.TestSuite()
suite.addTests(cases3)

runner = unittest.TextTestRunner()
runner.run(suite)

2、装载器

(1)TestLoader

# 创建一个装载器对象
testLoader = unittest.TestLoader()
# 创建suite
suite = unittest.TestSuite()

# 使用装载器对象的loadTestFromTestCase()方法
suite.addTest(testLoader.loadTestsFromTestCase(myUnitTest))

# 使用装载器对象的loadTestFromName()方法,loadTestFromNames()可以一次加入多个测试类
suite.addTest(testLoader.loadTestsFromName("UintTest_demo.myUnitTest"))

# 使用装载器对象的loadTestFromModule()方法, 直接导入模块
suite.addTest(testLoader.loadTestsFromModule(UintTest_demo))

runner = unittest.TextTestRunner()
runner.run(suite)

(2)defaultTestLoader

# 使用discover导入多个模块
module_path = './'

# 装载所有以"_demo"结尾的测试模块
discover = unittest.defaultTestLoader.discover(module_path, pattern="*_demo.py")

runner = unittest.TextTestRunner()

runner.run(discover)

你可能感兴趣的:(unittest,测试用例,测试工具,单元测试)