• Unittest基本使用


    1、Unittest框架

    1.1 什么是框架?

    说明:
    	1、框架英文单词为framework
    	2、为解决一类事情的功能集合
    
    • 1
    • 2
    • 3

    1.2 什么是Unittest框架?

    概念:Unittest是Python自带的一个单元测试框架,用它来做单元测试
    
    • 1

    1.3 为什么使用Unittest框架?

    1. 能够组织多个用例去执行 
    2. 提供丰富的断言方法 
    3. 能够生成测试报告
    
    • 1
    • 2
    • 3

    1.4 Unittest核心要素

    1、TestCase
    2、TestSuite
    3、TestRunner
    4、TestLoader
    5、Fixture
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、TestCase

    说明:TesstCase就是测试用例
    
    • 1

    2.1 案例

    需求:
    	定义一个实现加法操作的函数,并对该函数进行测试
    
    # 导包
    import unittest
    
    # 定义加法操作函数
    def add(x, y):
        return x + y
    
    # 定义测试类::新建测试类必须继承
    class Test01(unittest.TestCase):    # 鼠标在这一行右键运行可执行Test01类下的所有用例
        #定义测试方法:测试方法名称命名必须以test开头 
        def testadd01(self):			# 鼠标在这一行右键运行只执行testadd01这一条用例
            add(2, 3)
    
        def testadd02(self):			# 鼠标在这一行右键运行只执行testadd02这一条用例
            add(10, 10)
    
    # 可以这么使用
    # unittest.main("test01_testcase")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    2.2 定义测试用例

    1. 导包:import unittest 
    2. 定义测试类:新建测试类必须继承unittest.TestCase 
    3. 定义测试方法:测试方法名称命名必须以test开头
    
    • 1
    • 2
    • 3

    2.3 执行测试用例

    方式一:
    	使用pycharm在代码上点击鼠标右键,选择使用UnitTest运行 
    方式二:
    	调用 unittest.main("包名") 来运行
    
    • 1
    • 2
    • 3
    • 4

    3、TestSuite

    说明:(翻译:测试套件)多条测试用例集合在一起,就是一个TestSuite 
    使用:
    	1. 实例化: suite = unittest.TestSuite() 	
    		(suite:为TestSuite实例化的名称) 
    		
    	2. 添加用例:suite.addTest(ClassName("MethodName")) 
    		(ClassName:为类名;MethodName:为方法名) 
    		
    	3. 添加扩展:suite.addTest(unittest.makeSuite(ClassName)) 
    		(搜索指定ClassName内test开头的方法并添加到测试套件中)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3.1 案例

    # 导包
    import unittest
    from Unittest import Test01
    
    # 实例化 suite
    suite = unittest.TestSuite()
    
    # 调用添加方法
    # 写法1:  类名(“方法名”)   注意: 方法名要使用双引号
    suite.addTest(Test01("testadd01"))
    
    # 执行测试套件
    runner = unittest.TextTestRunner()
    runner.run(suite)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4、TextTestRunner

    说明:TextTestRunner是用来执行测试用例和测试套件的 
    使用:
    	1. 实例化: runner = unittest.TextTestRunner()
    	
    	2. 执行: runner.run(suite) # suite:为测试套件名称
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.1 案例

    需求:
    	1、将test01.py..test10.py共10条用例,将这10条用例批量执行;
    
    问题:
    	1. 使用suite.addtest(unittest.makeSuite(className))导入10条测试类
    	2. .addtest()需要添加10
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5、TestLoader

    说明:
    	用来加载TestCase到TestSuite中,即加载满足条件的测试用例,并把测试用例封装成测试套件。 
    	使用unittest.TestLoader,通过该类下面的discover()方法自动搜索指定目录下指定开头的.py文件 , 
    	
    	并将查找到的测试用例组装到测试套件; 
    
    用法:
    	suite = unittest.TestLoader().discover(test_dir, pattern='test*.py') 
    		自动搜索指定目录下指定开头的.py文件,并将查找到的测试用例组装到测试套件 
    		test_dir: 为指定的测试用例的目录 
    		pattern:为查找的.py文件的格式,默认为'test*.py' 
    
    	也可以使用unittest.defaultTestLoader 代替 unittest.TestLoader() 
    
    运行:
    	runner = unittest.TextTestRunner() 
    	runner.run(suite)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    5.1 案例

    """
        目标:演示TestLoader()类的用法
        作用:搜索指定目录下指定开头的py文件,在Py文件中搜索test开头测试方法,并且将这些方法添加到测试套件中,最后返回测试套件
        需求:
            运行 cases目录下test01.py~test05.py文件
        操作:
            1. 导包 unittest
            2. 调用TestLoader类下discaver方法
            3. 执行测试用例
    """
    # 导包
    import unittest
    # 调用方法
    # suite = unittest.TestLoader().discover("../cases")
    
    # 扩展 指定 tpshop开头的模块
    # suite = unittest.TestLoader().discover("../cases", pattern="tpshop*.py")
    
    # 扩展 使用 推荐使用
    suite = unittest.defaultTestLoader.discover("../cases")
    
    # 执行 套件 方法 TextTestRunner
    unittest.TextTestRunner().run(suite)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    5.2 TestLoader和TestSuite区别

    1. TestSuite需要手动添加测试用例(可以添加测试类,也可以添加测试类中某个测试方法) 
    2. TestLoader搜索指定目录下指定开头.py文件,并添加测试类中的所有的测试方法,不能指定添加测试方 法;
    
    • 1
    • 2
  • 相关阅读:
    BLOB/TEXT column ‘sup_content‘ used in key specification without a key length
    1. JavaScript有哪些数据类型, 它们的区别?
    PID控制电机输出作为电机PWM占空比输入的理解
    论文调研
    js组合键监听
    数据分析常用专业术语缩写及其含义
    golang读取conf文件的两种方式(ini和Viper)
    Spacewalk
    前端静态页面基本开发思路(一)
    【斗罗二】霍雨浩迷惑审查,戴华斌故意挑衅,惨败者屈服下跪
  • 原文地址:https://blog.csdn.net/weixin_44244493/article/details/126712912