如何使用JMeter中的beanshell post处理器生成随机数

时间:2017-05-09 05:56:14

标签: java jmeter beanshell

我正在尝试使用beanshell post processor生成一个随机数,但我不断收到错误

 "ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval   In file: inline evaluation of: `` try {....."

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

请参阅屏幕截图。Regular Expresssion Extractor Beanshell Script

1 个答案:

答案 0 :(得分:4)

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

    int count = ${__Random(1,counter,)};
    

    这一个

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

    log.info(String.valueOf(count));
    
  3. 考虑使用JSR223 Elements and Groovy language而不是Beanshell,因为Beanshell解释器的性能比Groovy引擎差。

  4. 如果您的目标是获得随机匹配,则可以在不使用JMeter Functions的任何脚本的情况下执行此操作:

    ${__V(countID_${__Random(1,${countID_matchNr},)})}
    

    有关详细信息,请参阅Here’s What to Do to Combine Multiple JMeter Variables指南。