如何在JMeter中使用beanshell后处理器生成随机数

Nas*_*eem 3 java jmeter beanshell

我正在尝试使用beanshell后处理器生成随机数,但是我不断收到错误消息

 "ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval   In file: inline evaluation of: `` try {....."
Run Code Online (Sandbox Code Playgroud)

我正在通过正则表达式提取器获取匹配记录的总数,并将变量传递给Post处理器,但是它不起作用。

请看截图。正则表达式提取器 Beanshell脚本

Dmi*_*i T 6

  1. 不要以${CountID}Beanshell脚本的形式内联函数和/或变量,因为它们可能会解析成会导致编译错误或其他形式的意外行为的东西。替换此行:

    int count = ${__Random(1,counter,)};
    
    Run Code Online (Sandbox Code Playgroud)

    与这个

    int count = ThreadLocalRandom.current().nextInt(1, counter);
    
    Run Code Online (Sandbox Code Playgroud)
  2. log.info(count);这行将无法工作,因为您无法将整数打印到jmeter.log文件,您需要先将其强制转换为String,因此请将此行更改为

    log.info(String.valueOf(count));
    
    Run Code Online (Sandbox Code Playgroud)
  3. 考虑使用JSR223 Elements和Groovy语言而不是Beanshell,因为Beanshell解释器的性能比Groovy引擎差。


如果您的目标是获得随机匹配,则可以仅使用JMeter函数来执行以下操作,而无需编写任何脚本:

${__V(countID_${__Random(1,${countID_matchNr},)})}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参见“如何合并多个JMeter变量”指南。