如何在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()} 函数。
如何解决
- 添加 JSR223 PreProcessor 作为 HTTP 请求采样器的子项
将以下代码放入"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 内置函数提供更好的性能。
我正在使用 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()} 函数。
如何解决
- 添加 JSR223 PreProcessor 作为 HTTP 请求采样器的子项
将以下代码放入"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 内置函数提供更好的性能。