unittest篇3-测试套件(TestSuite)详解

1、前言

  • 1、前面unittest篇博客中,有提到怎么去编写一个简单的TestCase,那么多个用例(TestCase)集合在一起就是TestSuite。
  • 2、测试套件就是用来负责组织测试运行的。

2、实现

2.1 创建一个测试套件

suite = suite=unittest.TestSuite()

2.2 加载case到Suite中

2.2.1 通过单条case进行加载到测试套件中

测试用例以上篇博客的测试用例为例

import unittest
class TestCaseDemo(unittest.TestCase):
    def testassertdemo(self):
        self.assertIn(1, [1, 2,3])
        self.assertNotIn(1, [2, 3,4])
        self.assertEqual('1', '1')
        self.assertNotEqual(1, 2)
        self.assertTrue(2 == 2)

    def testassertdemo_1(self):
        self.assertDictEqual({
     "code": 1}, {
     "code": 1})
        self.assertListEqual([1, 2], [1, 2])
        self.assertMultiLineEqual("name", "name")

    def testassertdemo_2(self):
        self.assertGreater(2, 0)
        self.assertGreaterEqual(2, 0)
        self.assertNotRegex("1", "122")  # 正则是否匹配
        self.assertCountEqual("12", "12")
        
# 1、第一种方法,一条一条case加载用例
def suite():
    # 创建一个测试套件
    suite = unittest.TestSuite()
    # 将测试用例加载到测试套件中
    case1 = TestCaseDemo("testassertdemo")
    suite.addTest(case1)

    case2 = TestCaseDemo("testassertdemo_1")
    suite.addTest(case2)

    case3 = TestCaseDemo("testassertdemo_2")
    suite.addTest(case3)

    return suite

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(suite())

2.2.2 通过测试用例类添加到测试套件中

# 2、第二种方法,通过测试用例类添加
def suite_2():
    # 创建一个测试套件
    suite = unittest.TestSuite()
    # 将测试用例加载到测试套件中
    # 创建一个用例加载对象
    loader = unittest.TestLoader()
    suite.addTest(loader.loadTestsFromTestCase(TestCaseDemo))
    
    return suite
    
if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(suite_2())

2.2.3 通过用例模块去添加case到测试套件中

# 第三种方法,通过用例所在的模块去添加case到测试套件中
def suite_3():
    # 创建一个测试套件
    suite = unittest.TestSuite()
    # 创建一个用例加载对象
    loader = unittest.TestLoader()
    # 先导入用例用例所在的模块
    from CSDN import testcase  # 此*.py模块是放用例所在的模块
    suite.addTest(loader.loadTestsFromModule(testcase))
    
    return suite
    
if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(suite_3())

2.2.4 通过指定路径进行加载,默认会加载该路径下所有以test开头的模块中的测试用例

# 第四种方法,通过用例所在的路径进行加载,默认加载该路径下以test开头的模块中的测试用例
def suite_4():
    # 创建一个测试条件
    suite = unittest.TestSuite()
    # 创建一个用例加载对象
    loader = unittest.TestLoader()
    suite.addTest(loader.discover(r'C:\Users\Maynard\PycharmProjects\studyday\CSDN',pattern='testcase.py'))
    # pattern参数可以写成test*.py,那么加载用例时,可以加载该路径下所有的测试用例
    # 大家发现discover路径是绝对路径,后续分享os模块后可以改为相对路径(灵活)
    
    return suite
    
if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(suite_4())

3、总结

  • 1、测试套件:使用unittest.TestSuite 这个类创建出来的对象就是测试套件;
  • 2、用例加载对象:unittest.TestLoader()
  • 3、main执行函数里面的TextTestRunner()是测试运行程序,unittest.TextTestRunner()就是创建测试运行程序;
  • 4、第四种通过用例模块所在的路径加载用例到测试套件中,是最常用的用例加载方法。

ps :

  • 1、后续内容继续深入unittest的学习;
  • 2、有什么问题,欢迎大家评论区评论交流!谢谢大家!
  • 3、如果觉得博主这篇博客对大家有用,麻烦评论区留下自己的‘脚印’ !

你可能感兴趣的:(unittest,unittest)