• UnitTest框架的使用


    在这里插入图片描述

    一、UnitTest框架是什么?

    UnitTest框架是python自带的一个单元测试框架,主要用它来做单元测试,它有以下特点:

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

    二、UnitTest核心要素

    1.TestCase(最核心模块)
    TestCase(测试用例),注意我们这个测试用例是unittest框架的组成部分,不是手工和自动化中我们所说的用例(Test Case)

    主要作用:每个TestCase都是一个代码文件,在这里代码文件中来书写真正的用例代码

    2.TestSuite
    TestSuite(测试套件),用来管理组装多个TestCase的

    3.TestRunner
    TestRunner(测试执行,测试运行),用来执行TestSuite(测试套件)的

    4.TestLoader
    TestLoader(测试加载),功能是对TestSuite(测试套件)功能的补充,用来管理 组装多个TestCase的

    5.Fixture
    Fixture(测试夹具),书写在TestCase(测试用例)代码中,是一个代码结构,可以在每个方法前后都会执行的内容

    三、TestCase

    TestCase是一个代码文件,在代码文件中书写真正的用例代码,代码文件的名字必须按照标识符的规则来书写(可以将代码的作用在文件的开头使用注解说明)

    使用步骤:

    1. 导包(unittest)
    2. 自定义测试类
    3. 在测试类中书写测试方法
    4. 执行用例
    """
        代码目的: 学习TestCase(测试用例)模块的书写方法
    """
    
    # 1. 导包
    import unittest
    
    # 2. 自定义测试类,需要继承unittest模块中的TestCase类即可
    class TestDemo(unittest.TestCase):
        # 3. 书写测试方法, 也就是真正的测试代码
        # 书写要求,测试方法必须以test_开头(本质是以test开头)
        def test_method1(self):
            print('TestCase1')
        def test_method2(self):
            print('TestCase2')
    # 4. 执行测试用例
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在执行测试用例方法时,我们有以下两种方式:

    1. 将光标放在类名的后边运行,会执行类中的所有测试方法
      在这里插入图片描述

    在这里插入图片描述
    2. 将光标放在方法名的后边运行,只执行当前的方法
    在这里插入图片描述
    在这里插入图片描述

    常见问题
    1.代码文件命名不规范

    1.代码文件的名字以数字开头
    2.代码文件名字中有空格
    3.代码文件名字中有中文
    4.其他的特殊符号
    (数字,字母,下划线组成,不能以数字开头)

    2.代码运行没有结果

    右键运行没有unittests for的提示,出现的问题
    解决方案:

    1. 重新建一个代码文件,将写好的代码复制进去
    2. 删除已有的运行方式
      在这里插入图片描述
      在这里插入图片描述
      这样默认就是用的unittest方式运行

    3.没有找到用例
    测试方法不是以test开头的,或者单词写错了

    四、TestSuite & TestRunner

    TestSuite(测试套件):管理 打包 组装TestCase(测试用例)文件的
    TestRunner(测试执行):执行TestSuite(套件)
    步骤:

    1. 导包(unittest)
    2. 实例化(创建对象)套件对象
    3. 使用套件化对象添加用例方法
      4.实例化运行对象
      使用运行对象执行套件对象

    具体代码:
    TestSuite(测试套件):是用来管理多个TestCase的,我们需要先创建多个TestCase文件
    在这里插入图片描述

    """
        学习 TestSuite 和 TestRunner使用
    """
    
    # 1. 导包
    import unittest
    
    from test.testcase_1 import TestDemo1
    from test.testcase_2 import TestDemo2
    
    # 2. 实例化套件对象
    suite = unittest.TestSuite()
    
    # 3. 使用套件对象添加用例方法
         # 方式一: 套件对象.addTest(测试类名('方法名')) 建议直接复制
    suite.addTest(TestDemo1('test_method1'))
    suite.addTest(TestDemo1('test_method2'))
    suite.addTest(TestDemo2('test_method1'))
    suite.addTest(TestDemo2('test_method1'))
    
    # 4. 实例化运行对象
    runner = unittest.TextTestRunner()
    
    # 5. 使用运行对象去执行套件
    runner.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
    • 25
    • 26

    在这里插入图片描述
    使用测试套件对象添加测试用例方法的第二种方法:

        # 方式二: 将一个测试类的所有方法进行添加
        # 套件对象.addTest(unitest.makeSuite(测试类名))
        # 缺点: makeSuite() 这个方法官方是不太建议用的
    suite.addTest(unittest.makeSuite(TestDemo1))
    suite.addTest(unittest.makeSuite(TestDemo2))
    
    • 1
    • 2
    • 3
    • 4
    • 5

    给出了下述的提示信息:DeprecationWarning: unittest.makeSuite() is deprecated and will be removed in Python 3.13. Please use unittest.TestLoader.loadTestsFromTestCase() instead.
    suite.addTest(unittest.makeSuite(TestDemo1))。但是可以正确输出结果的
    在这里插入图片描述
    我们在运行完后,上面的符号是有一定的含义的:
    . 代表用例通过,F 代表用例不通过,E error 用例代码有问题

    注意点:
    1.unittest.TestSuite()和unittest.TextTestRunner()是方法,需要加括号的
    在这里插入图片描述
    在这里插入图片描述
    2.运行时对象是.TextTestRunner()不是.TestRunner()
    在这里插入图片描述

  • 相关阅读:
    BUUCTF内涵的软件 1
    CA证书和openssl介绍
    transformer理解
    二项队列----数据结构与算法分析6.8
    经典卷积神经网络模型 - ResNet
    学习笔记-公有云安全
    《吐血整理》高级系列教程-吃透Fiddler抓包教程(29)-Fiddler如何抓取Android7.0以上的Https包-终篇
    Ubuntu Server 22.04 Jammy Jellyfish安装Budgie桌面环境
    服务间的隔离及断路器-Hystrix
    python 使用enumerate()函数详解
  • 原文地址:https://blog.csdn.net/buhuisuanfa/article/details/133966461