zoukankan      html  css  js  c++  java
  • Unittest框架/DDT数据驱动

    介绍前,思考以下问题

    • 测试数据如何自动化清除(运行前和运行后)
    • 多个测试用例,如何组织在一起执行
    • 多个测试用例的结果,如何展示在一份报告上

    01:什么是Unittest

    是python自带的单元测试框架(不需要安装),主要适用于单元测试,可以对多个测试用例进行管理和封装

    Unittest也叫pyunit,它提供了很多类和方法来处理各种测试工作

    单元测试-用一部分代码测试另一部分代码

    02:四大功能组成

    (一)测试用例----testcase 

      • 测试用例必须在类中
      • 测试用例所在的类,必须继承Unittest.TestCase
      • 测试用例的方法名称必须以test开头
      • 测试用例的执行顺序,按照Ascill码顺序(0~9,A~Z,a~z)
      • 利用父类TestCase的assertXXXX方法来断言
      • 用@unittest.skip(reason)装饰来跳过测试用例

    (二)测试固件----testfixture

      • 也叫测试夹件,主要工作是【初始化和善后】
      • 测试固件分为两种,一种是类级别的,一种是方法级别的
      • 类级别的测试固件,所有测试用例执行之前与之后运行一次
      • 方法级别的测试固件,每个测试用例执行之前与之后都运行一次

    1.示例一代码(方法级别):

    运行结果(鼠标顶格运行 ):

    2.示例二代码(类级别):

    运行结果:

    3.断言assert

    断言失败的话,用例2之后的测试用例不执行

    由此得出Unittest缺点--不能批量执行测试用例

    改造Unittest自己的assert:self.assertEqual

    报错后可继续执行下面的用例,且打印到测试报告中

    4.跳过某个测试用例 

    使用@unittest.skip(reason)装饰

    (三)测试套件----testsuite

      • 是用来组织测试用例的
      • 如:

    方法一:用例逐个添加到suite

    import unittest
    # 1构建测试套件test_suite
    # 1-1 方法一:逐个添加到suite
    suit = unittest.TestSuite()
    suit.addTest(UnittestDemo('test_001'))
    suit.addTest(UnittestDemo('test_002'))

    方法二:用例放入列表中,再添加到suite

    suite = unittest.TestSuite()
    list=[类名1("方法名1"),类名2("方法名2")]
    suite.addTests(list)
    
    例:
    list=[UnittestDemo('test_001'),UnittestDemo('test_002')]
    suite.addTests(list)

    方法三:通过TestLoader类的discover 方法来

    suite = unittest.defaultTestLoader.discover('用例所在的模块', pattern="*通配*.py")

    discover(start_dir,pattern='test*.py',top_level_dir=None)

    -case_dir:这个是待执行用例的目录。

    -pattern:这个是匹配脚本名称的规则,test*.py 意思是匹配 test 开头的所有脚本。

    -top_level_dir:这个是顶层目录的名称,一般默认等于 None 就行了。

    (四)测试运行器----testrunner

    • 是用来执行测试用例的
    • 第一种输出方法
    runner=unittest.TextTestRunner() #实例化TestRunner类
    runner.run(suite)#执行用例

    03: HTMLTestRunner--输出报告

    ClassicHTMLTestRunner下载解压

    放在此下目录,整个项目可通用

    导入:

    from ClassicHTML.TestRuner  import HTML.TestRunner

    • 第二种输出方法,使用HTMLTestRunner
    runner = HTML.TestRunner(tester = '测试报告人','title'='测试报告',
                             description='接口测试报告'.stream = '文件路径',verbosity=2#详细描述)
    runner.run(suite)

    04:DDT数据驱动

    解决问题:如何解决批量运行问题

    ddt官方文档地址:https://pypi.org/project/ddt/

    安装:

    pip install ddt

    ​导入:

    from ddt import ddt,data,unpack
    • ddt.ddt:装饰类,也就是继承TestCase的类。
    • ddt.data:装饰测试方法,参数是一系列的值。
    • ddt.unpack:传递的是复杂的数据结构时使用,比如使用列表或者元组,添加unpack后,ddt会自动把元组或者列表对应到多个参数上

    代码中加入:

    @ddt #类上面加上ddt
    class UnittestDemo(unittest.TestCase):
    #测试用例
    @data(放参数)
    def test_005(self,data):

     

  • 相关阅读:
    intel instruction 指令速查
    WinDbg双机调试配置
    MSDN上关于WinDbg的手册
    build temu error about SDL
    taintCheck的实现
    Vim使用taglist功能
    Windows编写driver
    cabal替代脚本
    怎样理解Functor与Monad
    haskell基本语法
  • 原文地址:https://www.cnblogs.com/kelly11/p/12821404.html
Copyright © 2011-2022 走看看