• unittest测试框架


    一、unittest框架4大核心组件(unittest是python自带的模块,无需安装下载)

    1、TestCase:写测试用例

    2、TestSuite:收集测试用例

    3、TestRunner:执行测试用例

    4、TesFixture:测试脚手架,前置条件,后置清理,根据实际情况选择使用


    二、unittest工作流程

    1、使用TestCase按照规则写测试用例,每一个函数为一个测试用例

    2、创建一个测试套件TestSuite,收集测试用例到测试套件

    3、TestRunner统一执行测试套件里面的测试用例

    4、生成测试报告


    三、测试用例编写

    1、导入模块unittest

    2、创建一个测试类,继承unittest.TestCase

      2.1测试用例必须写在测试类里面

    3、测试用例必须以test开头

    4、执行入口:unittest.main()    这种方法一般用于执行调试

    5、测试用例包含哪些东西

      5.1、前置条件,如token、session

    • 函数级别:setUp:每个测试用例执行前都会执行

            tearDown:每个测试用例执行后都会执行

    • 类级别:setUpClass:测试类执行开始的时候执行,只执行一次

           tearDownClass:测试类执行完成后执行,只执行一次

      5.2、测试步骤,如ddt+接口请求+提取全局变量

      5.3、测试断言,利用unittest框架自带的断言

      5.4、日志收集:还原整个测试过程

      5.4、后置清理:是否要清理掉测试数据,删除测试,关闭各种文件的连接,关闭数据库连接

     6、用例执行顺序

      6.1、按照测试用例名称的Ascii码大小来执行

        char():Ascii ----- 字符

        ord():字符 ------- Ascii

      6.2、执行顺序

        类级别前置---->函数级别前置----->测试用例----->函数级别后置----->类级别前置


    四、测试用例收集与执行

    通常会另起一个页面对用例进行收集和执行

    1、创建测试套件suite

    1.1、以测试用例为维度(了解,一般不用)

    import unittest
    from interface_code.unittest_code.test_case import TestDemo
    
    # 创建测试套件
    suite = unittest.TestSuite()
    
    # 添加一个测试用例到测试套件
    # suite.addTest(TestDemo("test_01"))  # 添加TestDemo这个测试类下面名为test_01的测试用例
    
    # 添加多个测试用例到测试套件
    case_list = [TestDemo("test_01"),TestDemo("test_02")]
    suite.addTests(case_list)

    1.2、以测试类为维度(了解)

    # 创建测试套件
    suite = unittest.TestSuite()
    
    # 添加整个测试类到测试套件(一般不用)
    suite.addTest(unittest.makeSuite(TestDemo))
    
    # 添加整个测试类到测试套件(用作了解)
    suite = unittest.TestLoader().loadTestsFromTestCase(TestDemo)

    1.3、以测试文件为维度(常用,要记)

    import unittest
    import os
    
    # 指定收集某个目录下的某个测试用例文件的测试用例
    
    dir_path = os.path.dirname(__file__)  # 获取当前文件所有的父目录路径
    # 获取到的路径是  E:/PycharmProjects/Auto_Project/interface_code/unittest_code
    
    # discover有两个参数
    # satrt_dir:测试用例目录
    # pattern = "test*.py" ,如果测试用例以test开头则不需要填该参数
    
    suite = unittest.defaultTestLoader.discover(dir_path)

    2、用例执行

    # 运行测试用例
    runner = unittest.TextTestRunner()  # 实例化执行器
    runner.run(suite)

     


    五、测试报告

    1、TextTestRunner()  自带的测试报告,不好看,无法识别,也没有执行过程(一般不用)

    2、HTMLTestRunner:不好看(一般不用)

    3、BeautifulReReport:第三方库,还可以,推荐使用

    import unittest
    import os
    from BeautifulReport import BeautifulReport
    
    dir_path = os.path.dirname(__file__)  # 获取当前文件所有的父目录路径
    suite = unittest.defaultTestLoader.discover(dir_path)  # 指定收集某个目录下的某个测试用例文件的测试用例
    
    br = BeautifulReport(suite)
    '''
    report方法的参数设置:
    description: 测试报告描述
    filename: 测试报告名称
    report_dir: 测试报告保存的路径,不填时默认为当前文件所有目录
    '''
    br.report("这是测试报告描述","这是测试报告名称")  # 执行用例并生成html格式的测试报告 

    4、unittestreport:第三方库,推荐使用

    import unittest
    import os
    from unittestreport import TestRunner
    
    dir_path = os.path.dirname(__file__)  # 获取当前文件所有的父目录路径
    suite = unittest.defaultTestLoader.discover(dir_path)  # 指定收集某个目录下的某个测试用例文件的测试用例
    
    # 用unittestreport收集测试报告
    runner = TestRunner(
                 suite=suite,
                 filename="report.html",  # 生成的文件名称
                 report_dir=".",
                 title='测试报告的名称',
                 tester='测试员',
                 desc="XX项目测试生成的报告",
                 templates=1  # 模板,可替换成模板2或3
    )
    runner.run()  # 执行用例并生成html格式的测试报告
  • 相关阅读:
    NOIP提高组2004 合并果子题解
    RMQ问题之ST算法
    7.18考试
    7.18
    7.17
    7.16
    7.15
    7.14
    7.13考试
    7.13
  • 原文地址:https://www.cnblogs.com/nanjo4373977/p/15054297.html
Copyright © 2020-2023  润新知