Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 629|回复: 0

[默认分类] python DDT读取excel测试数据

  [复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-3-26 10:41:57 | 显示全部楼层 |阅读模式

    ddt   结合单元测试一起用


    ddt(data.driven.test):数据驱动测试


    由外部数据集合来驱动测试用例


    核心的思想:数据和测试代码分离


     


    应用场景:一组数据来执行相同的操作


    当测试数据发生大量变化的情况下测试代码,(或者说测试用例)可以保持不变


     


    excel存储测试数据,ddt读取测试数据到 单元测试框架(测试用例中)-输出到HTML报告


     


    python.ddt框架


    安装:pip install ddt


     


    使用之前先导入ddt


    import ddt


     


    ddt结合单元测试来使用


    1.在测试类定义定义之前使用:@ddt.ddt


    2.在测试用例定义之前使用,@ddt.data(测试数据) 测试数据之间用逗号隔开


    3.在2的基础上定义测试用例时,参数接收2中的测试数据


     


    例:


    @ddt.ddt


    class Demo Test(unittest.TestCase):


             @ddt.data(2,3,4)


             def test_print(self,a)


                  print("简单调用@data查看输出的是什么?",a)


     


    例子


    import ddt


    import unittest


    @ddt.ddt


    class test_PersonInfo(unittest.TestCase):


        @claSSMethod


        def setUp(self):


            print("==========开始测试==========")


        @classmethod


        def tearDown(self):


            print("==========结束测试==========")


     


       @ddt.data(1,2,3,4)


        def test_print(self,a):


            print(a)


     


     


    ddt-data 数据


    一组数据之间用逗号隔开


    data的参数可以为如下几种


    1.一组数据中,每个数据为单个值


    2.一组数据中,每个数据为一个列表或者一个字典


    3.文件对象:jason,yaml


     


    一组数据中的数据为列表或者字典:


    @data([a,b],[c,d])


     


    如何从以上数据中获取到字典中每一项值


    @unpack


    若变量A=[{a:b,a1:b1},{c:d,c1:d1}]


    如何将变量A中的每一组元素作为测试数据


    @ddt.data(*A)


     


    import ddt


    import unittest


    @ddt.ddt


    class test_PersonInfo(unittest.TestCase):


        @classmethod


        def setUp(self):


            print("==========开始测试==========")


        @classmethod


        def tearDown(self):


            print("==========结束测试==========")


     


        @ddt.data([1,2],[3,4])


        def test_print(self,a):


    print(a)


    ==========开始测试==========


    [1, 2]


    ==========结束测试==========


    ==========开始测试==========


    [3, 4]


    ==========结束测试==========


     


            print(a[0])


    ==========开始测试==========


    1


    ==========结束测试==========


    ==========开始测试==========


    3


    ==========结束测试==========


     


      @ddt.data([1,2],[3,4])


        @ddt.unpack


        def test_print(self,a,b):


            print(a,b)


     


    ==========开始测试==========


    1 2


    ==========结束测试==========


    ==========开始测试==========


    3 4


    ==========结束测试==========


     


    @ddt.data([{"a":2,"b":3},{"c":4,"d":8},{"e":5,"f":7}])


        def test_print(self,a):


            print(a)


    ==========开始测试==========


    [{"a": 2, "b": 3}, {"c": 4, "d": 8}, {"e": 5, "f": 7}]


    ==========结束测试==========


     


    @ddt.data(*datas)


        def test_print(self,datas):


            print(datas)


    ==========开始测试==========


    {"class": "python2", "name": "xiaoshitou", "id": "0001", "sex": "male"}


    ==========结束测试==========


    ==========开始测试==========


    {"class": "python2", "name": "nuonuo", "id": "0002", "sex": "female"}


    ==========结束测试==========


    ==========开始测试==========


    {"class": "python2", "name": "fly", "id": "0003", "sex": "male"}


    ==========结束测试==========


    ==========开始测试==========


    {"class": "python2", "name": "haiyang", "id": "0004", "sex": "male"}


    ==========结束测试==========


    ==========开始测试==========


    {"class": "python2", "name": "shuangshuang", "id": "0005", "sex": "female"}


    ==========结束测试==========


     


    dat-data数据


    数据为文件对象:Json yaml


    json格式里面必须为双引号“”,且必须为键值对,不存在纯列表格式,值作为测试数据


    {"name":"nick","gender":"male","age":29}


     


    @ddt.file_data(jason文件路径)


     


       @ddt.file_data(os.getcwd()+"/test.json")


        def test_json(self,data):


            print(data)


     


    ==========开始测试==========


    [1, 2, 3]


    ==========结束测试==========


    ==========开始测试==========


    python2


    ==========结束测试==========


    ==========开始测试==========


    male


    ==========结束测试==========


    ==========开始测试==========


    xiaoshitou


    ==========结束测试==========


    ==========开始测试==========


    0001


    ==========结束测试==========       


     

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-26 19:56 , Processed in 0.427480 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表