java - 如何在 Jmeter 中创建随机列表名称并在不同线程中使用 - Jmeter
问题描述
我对 Jmeter 中的全局变量有疑问。我想在第一个线程中创建一个列表,并在所有线程中使用该列表。因为它是全局的,所以我希望每次运行测试计划时字符串名称都会获得新值。我创建了一个生成唯一名称的函数,但是当我尝试在第二个线程中调用它时,它不知道变量的名称。
- 我放置值的采样器,并保存全局变量 t_${offer_list_rand},它将指向列表
- 尝试在不同的线程中调用列表指针 t_${offer_list_rand} 并尝试向列表添加值
控制台异常
Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: offer_list_rand for class: Script30
javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: offer_list_rand for class: Script30
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:324) ~[groovy-all-2.4.15.jar:2.4.15]
at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:72) ~[groovy-all-2.4.15.jar:2.4.15]
at javax.script.CompiledScript.eval(CompiledScript.java:92) ~[?:1.8.0_65]
at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:221) ~[ApacheJMeter_core.jar:5.0 r1840935]
at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:71) [ApacheJMeter_java.jar:5.0 r1840935]
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622) [ApacheJMeter_core.jar:5.0 r1840935]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546) [ApacheJMeter_core.jar:5.0 r1840935]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.0 r1840935]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) [ApacheJMeter_core.jar:5.0 r1840935]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_65]
Caused by: groovy.lang.MissingPropertyException: No such property: offer_list_rand for class: Script30
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:66) ~[groovy-all-2.4.15.jar:2.4.15]
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:51) ~[groovy-all-2.4.15.jar:2.4.15]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:310) ~[groovy-all-2.4.15.jar:2.4.15]
at Script30.run(Script30.groovy:1) ~[?:?]
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:321) ~[groovy-all-2.4.15.jar:2.4.15]
... 9 more
- 如您所见,创建了 offer_list_rand 变量
我只想创建一个列表,其名称将在每次运行测试计划时随机化,并从不同的线程调用它。有人可以建议吗?
解决方案
根据JMeter 的最佳实践,使用vars.get
内部脚本而不是${}
:
props.put("t_" + vars.get("offer_list_rand"),offer_list);
推荐阅读
- networking - 如何检测数据包是否包含 DSA 标签?
- arrays - 从特定大小的组合中查找唯一分区
- node.js - Ng Serve 为 Ngrx 引发多重语法错误
- mongodb - 在 REST API 中公开 MongoDB 客户端 JavaScript 查找操作查询和选项
- angular - 如何在primeng条形图上自定义数据集
- kubernetes - apis/metrics.k8s.io/v1beta1/nodes 未找到
- python - RuntimeError:梯度计算所需的变量之一已被就地操作修改:[torch.cuda.FloatTensor [1, 64, 7, 7]]
- twitter-bootstrap - Bootstrap 4 间距断点混淆
- coupling - COMSOL 5.6 中的多物理场耦合:结构力学
- android - 如何使用Volley将从JsonObject获得的String响应传递给android中的textview