Groovy脚本中调用prev变量弹出警告是否正常?相关问题咨询
警告触发原因
你将__groovy函数嵌套在JMeter的参数化表达式中使用,触发警告的核心原因是变量绑定时机不匹配:
- JMeter解析
${}包裹的函数的阶段,早于JSR223组件的脚本执行阶段,此时JSR223还没完成上下文变量初始化,prev变量尚未生成,因此会触发未定义的警告。 - 这种在JSR223配置中嵌套
${}参数的写法本身不符合官方最佳实践,还会导致脚本无法缓存、执行效率降低。
脚本区域直接引用prev正常的原因
JSR223组件在执行脚本区域的代码前,会自动把JMeter上下文的预置变量批量绑定到脚本执行环境中,prev(对应前一个采样器的SampleResult实例)就是预置变量之一,除此之外还有vars、props、ctx等常用上下文变量,因此运行时可以直接识别调用,不会报错。
推荐正确写法
不要用嵌套函数的写法,直接把逻辑写在JSR223的脚本区域即可,示例如下:
import groovy.json.JsonSlurper // 提取前序采样器响应中的result字段 def responseContent = prev.getResponseDataAsString() def result = new JsonSlurper().parseText(responseContent).result // 调用加密函数,Groovy中直接调用JMeter函数不需要加${} def encryptStr = __Sms_String_Encrypt(result, vars.get("secretKey"), "2", "re") // 可根据需要把加密结果存入JMeter变量供后续使用 vars.put("encrypted_result", encryptStr)
内容的提问来源于stack exchange,提问作者walker
相关产品推荐
相关产品推荐

