有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于分析RegularExpressionExtractor的Beanshell采样器JMeter中存在java错误

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

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

JMeterlib/ext中复制jar文件

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

下面是响应字符串

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}

比恩希尔的错误

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.

请让我知道为什么我会得到这个错误


共 (3) 个答案

  1. # 1 楼答案

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

    BeanShell代码:

    log.info("returnValue " + vars.get("returnValue"));
    
  2. # 2 楼答案

    从Beanshell访问JMeter变量的方式与您所设想的不同

    您将使用“vars”内置Beanshell对象(或者变量,如果您愿意)

    whatsActuallyReturned = vars.get("returnValue");
    vars.put("returnValue", "whatever I want to put instead");
    
  3. # 3 楼答案

    你的${returnValue}语句在语法上是不正确的,你至少需要用"${returnValue}"这样Beanshell解释器就会把它当作Java String来处理

    接下来,仅仅把这句话放在Beanshell取样器中没有任何意义,你应该添加一些进一步的处理,即:

    • return "${returnValue}";-将Beanshell Sampler result设置为该值
    • SampleResult.setResponseData("${returnValue}".getBytes());与上文相同,但使用SampleResult速记
    • print("${returnValue}");-将值输出到STDOUT
    • log.info("${returnValue}");-将值输出到jmeter。日志文件

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