[超实用]按行组合代码写法

2021-01-13  海鹅 

我们在做测试的时候往往需要用到数据的多种组合,产生多个新数据来生成更多的测试用例,达到更全面的测试效果的目的。


实现多种数据组合的方式很多,但是怎么样才是最简单的呢,我们先看接下来的例子:


假设我有三个不同的列表:

col1 = ['2006-03-28','2006-04-05','2006-04-06']
col2 = ['IBM', 'MSFT', 'IBM']
col3 = [1000, 1000, 500]


将这些列表合并到另一个列表中的最有效方法是:



col = [('2006-03-28', 'IBM', 1000),
       ('2006-04-05', 'MSFT', 1000),
       ('2006-04-06', 'IBM', 500)]



要实现上述按行组合的方式,代码怎么写?

java代码:


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class testArr {
    public static void main(String[] args) {
        String[] arr1 = new String[]{"IBM","MS","bbb"};
        Integer[] arr2 = new Integer[]{1000,2000,3000};
        String[] arr3 = new String[]{"2006-03-28","2006-03-29","2007-01-01"};
        Object[] objArr = new Object[arr1.length+arr2.length+arr3.length];
        System.arraycopy(arr1, 0, objArr, 0, arr1.length);
        System.arraycopy(arr2, 0, objArr,arr1.length , arr2.length);
        System.arraycopy(arr3, 0, objArr, arr1.length+arr2.length, arr3.length);
        System.out.println(Arrays.asList(objArr));
    }
}



python的写法:

>>> col1 = ['2006-03-28','2006-04-05','2006-04-06']
>>> col2 = ['IBM', 'MSFT', 'IBM']
>>> col3 = [1000, 1000, 500]
>>> zip(col1, col2, col3)
[('2006-03-28', 'IBM', 1000), ('2006-04-05', 'MSFT', 1000), ('2006-04-06', 'IBM', 500)]


如果列已经在一个列表中,则可以使用zip(*cols),代码如下:

>> col1 = ['2006-03-28','2006-04-05','2006-04-06']
>>> col2 = ['IBM', 'MSFT', 'IBM']
>>> col3 = [1000, 1000, 500]
>>> col = list(zip(col1 ,col2 ,col3 ))
>>> print(str(col))

[('2006-03-28', 'IBM', 1000),
 ('2006-04-05', 'MSFT', 1000),
 ('2006-04-06', 'IBM', 500)]


仅zip()语法本身适用于Python2.x。在Python3.x中,使用上面的代码将列表合并为按行(或作为电子表格列)


最后当然是龙测的实现方式:无需写代码,选择配置即可轻松实现


用例直接选择配置——数据组合方式选择“按行组合”,点击保存即可
让我们看一下龙测工具自动生成的代码的实现结果

图片


我们可以看到无需写代码,就轻松实现了按行组合,生成多组测试数据,每组测试数据可以运行生成一个测试用例,当你的数据量很大的时候,我们同样只需选择配置完成数据造数,可以最少的时间自动生成最多的数据和测试用例。


快来龙测get这个新技能吧。


关于我们


龙测科技——一站式通用自动化软件测试TestOps平台

画流程图、积木图自动生成测试代码的自动化测试专家

测试体验官网:

http://www.dragontesting.cn

51°|517 人阅读|0 条评论
登录 后发表评论