如何在jmeter的预处理器中使用__eval

how to use __eval in preprocessor of jmeter

我正在使用 faker.jar 插件在 json 文件中生成随机数据

JSON 文件就像

{
    "name" = "${__BeanShell(new com.github.javafaker.Faker().name().fullName())}"
 "id" = "${__BeanShell(new com.github.javafaker.Faker().IdNumber())}"
}

在 jmeter 中,我使用的是 http 采样器

这工作正常,但现在我想用响应评估请求,所以我想将请求主体保存在一个变量中并将该变量传递给 http 请求,然后使用 post 过程来评估请求反对响应,但我无法在预处理器中使用 ${__eval()} 函数。

如何解决

  1. 添加 JSR223 PreProcessor 作为 HTTP 请求采样器的子项
  2. 将以下代码放入"Script"区域:

    vars.put('foo', sampler.getArguments().getArgument(0).getValue())
    

    3 就是这样,预处理器将从 HTTP 请求采样器中获取正文数据并将其存储到 ${foo} JMeter 变量中。


请注意 according to JMeter Best Practices you should be using __groovy() function 而不是 __Beanshell(),因此请考虑在下一个可用机会时修改您的 JSON 文件。

另请注意,JMeter 提供了一些允许生成随机值的内置函数,即 __Random(), __RandomString(), __UUID() 等,因此您甚至可以丢弃第 3 方库,因为 JMeter 内置函数提供更好的性能。