码迷,mamicode.com
首页 > 其他好文 > 详细

数据驱动ddt框架1

时间:2021-01-27 14:04:25      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:code   ack   用例   col   highlight   传递   nbsp   使用   数据驱动   

@data()和@unpack

    @data((1,2),(3,4))
    @unpack
    def test2(self,dataa,data2):
        print(dataa,data2)

以上代码是想要生成两个测试用例,第一个用例把ddataa=1,data2=2,第二次用例把dataa=3,data2=4@data()括号中可以接受若干个参数传递给下方的方法中

在传数据的时候,@data()先看第一层括号中的元素,加@unpack时,data会把第一个括号中的所有元素按照第一层逗号分割,第一次把第一个数据当成第一组数据拆分后(此时数据数量取决于第一个数据里面的元素数量,所以一般来说每一组数据应该是能容纳多个数据的数据类型,比如元组列表字典)传到下方方法,第二个数据拆分后当成第二组数据传到下方方法…即:

第一次把(1,2)看作一组数据,由于有@unpack,并且元组(1,2)中的子元素有两个,第一次传递就是把int 1传递赋值给dataa,把int 2传递赋值给data2,作为第一次测试用例的数据

同理,第二次把元组(3,4)看作一组数据,本次传递把int 3传递赋值给dataa,把int 4传递赋值给data2,作为第二次测试用例的数据

每一组数据的数量(即元组(1,2)中子元素的数量)都应该对应下方函数的参数个数(dataa和data2).

 

不加@unpack,data会把第一层括号中的所有元素按照第一层逗号分隔,第一次把第一个数据传到下方方法的第二的参数,即

第一次把元组(1,2)传递赋值给dataa,不加@unpack时上述代码会报错,因为data2没有赋值

于是有一些结论:当方法有2个以上参数时,使用@data()不加@unpack是实现不了的

@unpack可以把每一组数据拆分,前提是这组数据可以拆分,就是说这组数据只能是元组列表字典--

另外上述代码也可以写成

tup1=((1,2),(3,4))
@data(*tup1)
@unpack
def test2(self,dataa,data2):
    print(dataa,data2)

 *意为把元素中的子元素按照顺序搬过来

但是假如变量tup1指向一个列表,需要写成@data(*(tup1))才能和上面功能相同

当用例方法参数大于2时,使用@data()和@unpack不方便,不如@file_data()

有一个比较特殊的使用方法:

 

    list1=[(1,2),(3,4),(5,6)]
    @data(*list1)
    @unpack
    def test4(self,data1,data2):
        print(data1,data2)

 

这种方法看似能实现:分3组数据,第一组1和2,第二组3和4,第三组5和6

但其实并不能实现,需要写成

    list1=[(1,2),(3,4),(5,6)]
    @data(*(list1))
    @unpack
    def test4(self,data1,data2):
        print(data1,data2)

不如@file_data()

 

数据驱动ddt框架1

标签:code   ack   用例   col   highlight   传递   nbsp   使用   数据驱动   

原文地址:https://www.cnblogs.com/lqs244/p/14287874.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!