我最近刚刚读到,使用vars.get("variable")
比使用${variable}
更有效。我有使用后者的经验,但是会导致错误,但是我已经设法解决了这个问题,以便不再发生错误(由于这里不是我的问题,所以我不再讨论了)。这是代码的一部分:
import groovy.json.JsonSlurper;
String response = prev.getResponseDataAsString();
def jsonSlurper = new JsonSlurper();
def json = jsonSlurper.parseText(response);
if (json.data.target_list) {
Random random = new Random();
String[] strLeadDBIDList = json.data.target_list.keySet();
int idxLeadDBID = random.nextInt(strLeadDBIDList.length);
String strLeadDBID = strLeadDBIDList[idxLeadDBID];
log.info("Leads Dashboard - Customer ID: " + strLeadDBID);
vars.put("strLeadDBID",strLeadDBID);
String strLeadDBModule = json.data.target_list."${strLeadDBID}".parent_type;
log.info("Leads Dashboard - Customer Type: " + strLeadDBModule);
vars.put("strLeadDBModule",strLeadDBModule);
...
所以我的问题是,有没有办法在vars.get("strLeadDBID")
代码中使用"${strLeadDBID}"
而不是String strLeadDBModule = json.data.target_list."${strLeadDBID}".parent_type;
?或者我可以改用变量strLeadDBID
,如何使用?谢谢!!!
答案 0 :(得分:0)
我希望它会是这样的:
String strLeadDBModule = json.data.target_list.get(vars.get("strLeadDBID")).parent_type;
如果它不起作用,请执行以下操作:
log.info('Target list class name: ' + json.data.target_list.getClass().getName()))
,然后在 jmeter.log 文件中查找相关行。然后在Groovy GDK API documentation中为给定的类检查JavaDoc并寻找合适的函数。
也按照JSR223 Sampler documentation
使用此功能时,请确保您的脚本代码不直接在脚本代码中使用JMeter变量,因为缓存将仅缓存第一次替换。 代替使用脚本参数。
您可以尝试以下设置:
查看Apache Groovy - Why and How You Should Use It文章,以获得有关在JMeter测试中使用Groovy脚本的更多提示