JMeter为forEach Controller填充用户定义的变量

时间:2014-12-30 05:52:09

标签: for-loop groovy jmeter

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

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

我可以使用的国家代码之一是“ALL”(其他为“IN”,“US”,“UK”,“MX”......),它们将返回API支持的所有国家/地区响应也将包含国家/地区代码。 因此,我能够填充我需要测试的所有国家代码。 groovy scipt

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不能提前命名。

能做到吗?我是否正确地解决了这个问题?任何不同的方法都是受欢迎的。

由于

1 个答案:

答案 0 :(得分:0)

我对groovy并不熟悉,但这里有:

您拥有国家/地区列表 - 您可以在脚本中获得该列表。如果您创建for循环(在groovy脚本中),您可以动态创建变量名称("country_" + [loop iterator])并将其插入vars.put()

所以:

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