Jmeter Groovy通过从上一个列表进行迭代来创建新列表

时间:2018-08-18 15:43:39

标签: groovy jmeter

我有一个列表(tsts),该列表是动态的,是在分离操作中派生的,但可能如下所示。 我想遍历tsts并创建一个新列表-> list1,仅选择说到索引2。我尝试了for循环,甚至-> tsts.eachWithIndex {item,index->​​ for some为什么我的list1只包含最后一个项目?

import org.apache.jmeter.util.JMeterUtils;
import groovy.json.JsonSlurper;
def jsonResponse = null;
List<String> tsts = new ArrayList<String>()
tsts = [10, 11, 12];
str1 = "abc"

def map1 = [:]
def list1 = []
int TCcntr = 2;
cnt1 = 0
System.out.println("1 My Loop begins----------------");
for(int i = 0;i<TCcntr;i++) {
    map1.clear()
    map1.put(str1,tsts[cnt1].toInteger());
    System.out.println("map1----> "+map1);
    // list1.add(map1);
    list1 = list1+map1;
    System.out.println("list---> "+list1);
    cnt1 = cnt1+1;
}

我的输出

1 My Loop begins----------------
map1----> [abc:10]
list---> [[abc:10]]
map1----> [abc:11]
list---> [[abc:11], [abc:11]]

为什么列表1继续进行最后一项迭代?它应该看起来像这样

   list1----> [[abc:10], [abc:11]]

1 个答案:

答案 0 :(得分:1)

这很有用,多亏了Dimitri和Tim,我还学会了其他方法

tsts = [10, 11, 12, 13];
str1 = "abc"
def list1 = []
int TCcntr = 3;

for(int i = 1;i<TCcntr;i++) {
    map1 =[:]
    map1.put(str1,tsts[i].toInteger());
    list1 = list1+map1;
}

输出

 list---> [[abc:11], [abc:12]]