Beanshell Sampler JMeter 解析 RegularExpressionExtractor 时出错

Error in Beanshell Sampler JMeter for parsing RegularExpressionExtractor

在 jar 文件中设置以下示例结果

mySampleResult.setResponseData("ReturnCode" + returnCode + "EndReturnCode" ,null);

复制 JMeterlib/ext 中的 jar 文件。

创建一个项目,其中 Regular expression extractor 附加到 java 请求,该请求在 jar 文件

中调用运行测试

响应字符串如下

ReturnCodeThu Feb 16 08:01:56 GMT 2017,Thu Feb 16 09:09:27 GMT 2017,0:1:7:31,98.74105EndReturnCode

正则表达式提取器

Reference Name: returnValue
Regular Expression: ReturnCode(.*?)EndReturnCode

豆壳代码

 ${returnValue}

Beanshell 错误

Response message: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval  In file: inline evaluation of: ``  try {     Thu Feb 16 08:01:56 GMT 2017,Thu Feb 16 09:09:27 GMT 2017,0:1:7:31,9 . . . '' Encountered "16" at line 4, column 13.

请告诉我为什么会出现此错误。

如果您只想将值打印到 JMeter 日志文件,请使用 log.info 方法并使用 vars.get.

BeanShell 代码:

log.info("returnValue " + vars.get("returnValue"));

您的 ${returnValue} 语句在语法上不正确,您至少需要用引号将其括起来,例如 "${returnValue}" 这样 Beanshell 解释器会将其视为 Java String

展望未来,仅将此语句放入 Beanshell 采样器中没有任何意义,您应该添加一些进一步的处理,即:

  • return "${returnValue}"; - 将 Beanshell 采样器结果设置为此值
  • SampleResult.setResponseData("${returnValue}".getBytes()); - 同上但使用 SampleResult shorthand
  • print("${returnValue}"); - 输出值到STDOUT
  • log.info("${returnValue}"); - 将值输出到 jmeter.log 文件

有关在 JMeter 脚本中使用 Beanshell 的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component

从 Beanshell 访问 JMeter 变量的方式与您想象的不同。

您将使用 "vars" built-in Beanshell 对象(或变量,如果您愿意)。

whatsActuallyReturned = vars.get("returnValue");
vars.put("returnValue", "whatever I want to put instead");