暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

接口测试 | Day55 ddt数据驱动

走向易富强之路 2021-08-17
428
 
背景说明:
1、为了防止三天打鱼两天晒网式学习
2、每日更新1-2个小知识点或者案例
3、只看和跟着做的理解程度是不一样的
4、建议一起打卡练习
5、互相督促打卡 + v:yifuqiang2021

Day55

目标:
  • ddt数据驱动
    • ddt模块的安装
    • ddt模块的使用
      • data
      • unpack
      • ddt驱动文件内容


一、ddt数据驱动
  • ddt全称:data driver test,数据驱动测试
  • 搭配UnitTest测试框架实现数据的提供与分离
  • ddt模块都是基于装饰器的形式来进行使用的

二、ddt的安装
  • 安装:pip install ddt
  • 导包:from ddt import ddt, data, unpack


三、ddt的使用
  • data
  • unpack
  • ddt驱动文件内容


3.1) data装饰器
  • 如果data装饰器设置有多个值,那么就会运行多次测试用例
  • data解析之后确定用例的执行次数
    -- 实例1 :函数单个形参,data多次传入


    import unittest
    from ddt import ddt, data


    @ddt
    class UnitDdt(unittest.TestCase):
    @data('name1','name2')
    def test_01(self,name):
    print(name)


    if __name__ == '__mian__':
    unittest.main()
    运行结果:
    • data是通过逗号进行分割的,分割了两次。
    • 相当于两条数据执行了同一个test测试用例函数,也可以说是执行了两次测试用例


      -- 实例2 :函数多个形参,data传入数据
      import unittest
      from ddt import ddt, data


      @ddt
      class UnitDdt(unittest.TestCase):

      @data(['name1',18],['name2',20])
      def test_01(self,name,age):
      print(name,age)


      if __name__ == '__mian__':
      unittest.main()
      运行结果:
      • data是通过逗号进行分割的,将两个list都传到一个参数里了
      • 可以看到['name1',18]整个传到name字段里了,而不是name传name,age传age
      • 解决办法:加unpack

      3.2) unpack
      • unpack与data解析机制是一样的,也是通过逗号进行分割
      • unpack解析的是data已经解析之后的数据内容
      • unpack只是将本次执行的数据进行解析,相当于data的二次解析

        import  unittest
        from ddt import ddt, data, unpack


        @ddt
        class UnitDdt(unittest.TestCase):

        @data(['name1',18],['name2',20])
        @unpack
        def test_01(self,name,age):
        print(name,age)


        if __name__ == '__mian__':
        unittest.main()
        运行结果:

        3.3) ddt驱动文件内容
        • 除去Yaml之外,其他的文件都需要自行定义函数来驱动
        • 读写文件内容进行数据驱动其本质还是驱动的数据
        • @data(*函数名),意思是挨个解析数据内容

        准备文件:./data/demo.txt
          import  unittest
          from ddt import ddt, data, unpack


          # 从文件中读取数据
          def readFile():
          list = []
          file = open('./data/demo.txt','r',encoding='utf-8')
          for line in file.readlines():
          list.append(line)
          return list


          @ddt
          class UnitDdt(unittest.TestCase):
          @data(*readFile())
          def test_02(self,name):
          print(name)


          if __name__ == '__mian__':
          unittest.main()
          运行结果:

          三、总结
          • ddt数据驱动(data driver test,数据驱动测试
            • ddt模块的安装
              • 安装:pip install ddt
              • 导包:from ddt import ddt, data, unpack
              • 基于装饰器的形式使用:
                • 类名前使用:@ddt
                • 函数名前使用:@data, @unpack
            • ddt模块的使用
              • data
                • 如果data装饰器设置有多个值,那么就会运行多次测试用例
                • 如果函数只有一个参数,data通过逗号进行分割后的内容传入
              • unpack
                • 如果函数有多个传参,需要用unpack解包
                • 相当于data解析后的二次解析
              • ddt驱动文件内容
                • 除去Yaml之外,其他的文件都需要自行定义函数来驱动
                • @data(*函数名),意思是挨个解析数据内容

          “你的鼓励,是我继续的动力”
          文章转载自走向易富强之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论