Jmeter JSR223脚本、JSR223后处理器中存在问题:javax.script.ScriptException
我使用的是Jmeter 5.0,我在JSR223后处理器中编写了一段java代码。代码如下-Jmeter JSR223脚本、JSR223后处理器中存在问题:javax.script.ScriptException,jmeter,scripting-language,jsr223,Jmeter,Scripting Language,Jsr223,我使用的是Jmeter 5.0,我在JSR223后处理器中编写了一段java代码。代码如下- import java.util.Map; import java.util.HashMap; Map gamePlayHistoryMap = new HashMap(); gamePlayHistoryMap.put(${playerId}, ${GameplayHistoryId}); props.put("GamePlayHistoryMap", gamePlayHistoryMap);
import java.util.Map;
import java.util.HashMap;
Map gamePlayHistoryMap = new HashMap();
gamePlayHistoryMap.put(${playerId}, ${GameplayHistoryId});
props.put("GamePlayHistoryMap", gamePlayHistoryMap);
Map payLevelDetailsMap = new HashMap();
payLevelDetailsMap.put(${playerId}, ${PayLevelDetails});
props.put("PayLevelDetailsMap", payLevelDetailsMap);
然而,当我执行测试计划时,在控制台中我得到以下错误-
javax.script.ScriptException:在文件中:内联求值:import java.util.Map;导入java.util.HashMap;Map gamePlayHistoryMap=新H…“”在第6行第23列遇到“(107,)”。
在内联计算中:
import java.util.Map;导入java.util.HashMap;Map gamePlayHistoryMap=新H…“”在第6行
有人能帮我指出哪里出了问题吗?不要在JSR223脚本中使用
${}
,而是使用vars.get(“”)来获取变量
gamePlayHistoryMap.put(vars.get("playerId"), vars.get("GameplayHistoryId"));
似乎GameplayHistoryId
是空的,在这种情况下,在JSONExtractor
中添加默认值或失败测试
请参阅JMeter的脚本编写最佳实践:
在这种情况下,请确保脚本不使用任何使用${varName}
的变量,因为缓存将只获取${varName}
的第一个值。而是使用:
vars.get(“varName”)
,查看您的异常详细信息,您使用的似乎是java
,它不是真正的java,它已经存在,您必须坚持使用Java5语法李>
不要内联到脚本中,因为它们可能会被解析为导致脚本失败的内容,在Groovy中,它们与GString模板和编译缓存功能冲突。使用类的vars
速记来读取现有变量值并创建新变量值,即替换此行:
gamePlayHistoryMap.put(${playerId}, ${GameplayHistoryId});
关于这一点:
gamePlayHistoryMap.put(vars.get('playerId'), vars.get('GameplayHistoryId'));
缺少映射键/值定义
Map <String, String> gamePlayHistoryMap = new HashMap<>();
gamePlayHistoryMap.put(${playerId}, ${GameplayHistoryId});
Map gamePlayHistoryMap=newhashmap();
gamePlayHistoryMap.put(${playerId},${GameplayHistoryId});
不确定以下问题的答案:
不要在JSR223脚本中使用${},而是使用vars.get(“”)
我不确定这和它有什么关系。${playerId},${GameplayHistoryId},${PayLevelDetails}-我使用JSONExtractorDon提取的这些值在JSR223脚本中不使用${},而是使用vars.get(“”)来获取变量-为什么?@AritroSen请参阅JMeter针对JSR223的最佳实践:好的。还有一个问题-我在一个线程中有3个JsonExtractor。如何使用从第一个到第三个中提取的值?@AritroSen请提出一个新问题,并提供相关细节和示例我理解JSR223脚本部分。如何在后续的线程中使用这些道具来提取这个映射的值——我已经这样编码了——import java.util.map;导入java.util.HashMap;Map gameTemplateIdMap=props.get(“GamePlayHistoryMap”);映射payLevelDetailsMap=props.get(“payLevelDetailsMap”);这是正确的方法吗?