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

时间:2019-03-12 10:34:12

标签: testing jmeter jsr223

我正在使用一个faker.jar插件在json文件内部生成随机数据

JSON文件就像

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

在jmeter中,我正在使用http采样器

enter image description here

这工作正常,但是现在我想评估带有响应的请求,因此我想将请求主体保存在一个变量中,并将该变量传递给http请求,然后使用后处理针对响应评估请求,但是我无法在预处理器中使用$ {__ eval()}函数。

解决方法

1 个答案:

答案 0 :(得分:1)

  1. JSR223 PreProcessor添加为HTTP请求采样器的子项
  2. 将以下代码放入“脚本”区域:

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

    3就这样,PreProcessor将从HTTP Request采样器获取主体数据,并将其存储到${foo} JMeter变量中。


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

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