在JMeter的foreach控制器中使用数组

guicsvcw  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(157)

从前面的后处理器中,我有一个数组(即UUIDCollector,大约有2K UUID),
我把这个数组和vars.putObject("UUID_List", resultStudyUUIDCollector);
数组示例

[
    "f439d9bb-487b-4a46-b5aa-1013d8de464a",
    "6656dae1-159a-4062-9cbb-5382d5202cd8",
    "197650ca-d8fc-451d-9332-50d801b5c426",
    "ac7adabd-8040-498b-87ed-9c69d678ad49"....]

我想将这些UUID传递给下一个URL调用,但出现错误

2023-06-11 16:25:52,482 ERROR o.a.j.e.JSR223PostProcessor: Problem in JSR223 script, JSR223 PostProcessor
javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: Script169$_run_closure1.doCall() is applicable for argument types: (String) values: [f439d9bb-487b-4a46-b5aa-1013d8de464a]
Possible solutions: doCall(java.lang.Object, int), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320) ~[groovy-jsr223-3.0.11.jar:3.0.11]
    at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:71) ~[groovy-jsr223-3.0.11.jar:3.0.11]

JMeter的配置,
处理UUID的代码,

def UUID_List = vars.getObject("UUID_List");

log.info('Total Number of UUID: ' + UUID_List.size())

UUID_List.each {    myListItem, int index -> 
    vars.put('json_'+ (index + 1), new groovy.json.JsonBuilder(myListItem).toPrettyString())
}

7nbnzgx9

7nbnzgx91#

如果你想在ForEach控制器中使用你的“数组”,就像你的屏幕截图一样配置,你需要预先创建相关的JMeter Variables,格式如下:

json_1=f439d9bb-487b-4a46-b5aa-1013d8de464a
json_2=6656dae1-159a-4062-9cbb-5382d5202cd8
etc.

为了做到这一点,你需要添加下面的行到你创建你的“数组”的地方。

1.upto(UUID_List.size(),{ vars.put('json_' + it, UUID_List.get(it - 1))})

然后您将能够在需要时将ForEach控制器内的连续值称为${json}
有关JMeter中Groovy脚本的更多信息:Apache Groovy: What Is Groovy Used For?

gwo2fgha

gwo2fgha2#

我看不出你的代码有什么问题,但是对你的代码做一些小的修改也是可以的,

def UUID_List = vars.getObject("UUID_List");

log.info('Total Number of UUID: ' + UUID_List.size())

UUID_List.eachWithIndex {    myListItem, index -> 
    vars.put('json_'+ (index + 1), new groovy.json.JsonBuilder(myListItem).toPrettyString())
}

相关问题