For loop JMeter为forEach控制器填充用户定义的变量

For loop JMeter为forEach控制器填充用户定义的变量,for-loop,groovy,jmeter,For Loop,Groovy,Jmeter,我有一个要测试的服务API,它返回不同国家的各种参数的一些默认值。国家代码是服务的模板参数。i、 e http://${hostname}:${port}/country/${countryCode} 我可以使用的国家代码之一是“ALL”(其他为“IN”、“US”、“UK”、“MX”…),它将返回API支持的所有国家,并且响应也将包含国家代码。 因此,我能够填充所有需要测试的国家代码。时髦的发型 import groovy.json.JsonSlurper def slurper = new J

我有一个要测试的服务API,它返回不同国家的各种参数的一些默认值。国家代码是服务的模板参数。i、 e

http://${hostname}:${port}/country/${countryCode}

我可以使用的国家代码之一是“ALL”(其他为“IN”、“US”、“UK”、“MX”…),它将返回API支持的所有国家,并且响应也将包含国家代码。 因此,我能够填充所有需要测试的国家代码。时髦的发型

import groovy.json.JsonSlurper
def slurper = new JsonSlurper()
def result = slurper.parseText(prev.getResponseDataAsString())

assert prev.isResponseCodeOK()

def countries = result.country
assert countries instanceof List // Should get as [IN, US, UK, MX] for e.g.
def numOfCountries = countries.size()
我试图使用变量“countries”,它是我需要在ForEachController中测试服务的所有国家的列表。为此,我将需要在格式的UDV名称

country_1 , country_2 , country_3 ...
如何使用该名称格式将列表元素保存到UDV。问题是我不知道或者说不能假设有多少国家得到了支持,因此不能预先命名UDV

那能做到吗?我的方法对这个问题正确吗?欢迎采取任何不同的办法


谢谢

我对groovy不太熟悉,但下面是:

你有一个国家的名单,你可以在剧本中看到。如果(在groovy脚本中)创建for循环,则可以动态创建变量名(
“country”+[loop iterator]
),并将其插入
vars.put()

因此:

for(int x=0;x
for(int x=0; x < v.size(); x++)
{
    String country_name = "country_" + x;
    vars.put(country_name, v[x]);
}