使用 HTTP 请求有条件地发送 jmeter 变量

Dio*_*sis 5 jmeter

我正在使用 JMeter 发送 HTTP POST 请求。

我的请求正文是 JSON,例如类似{"Var1": "${Var1}","Var2": ${Var2},"Var3":"${Var3}"}.

这些是在 HTTP 请求的参数中设置的,没有参数名称。这工作正常,我能够使用我在 beanshell 预处理器中设置的变量发送请求(通过设置变量并使用 vars.put() )。

我的问题是如何通过参数的预处理器部分以编程方式发送?例如:

if(a){
send parameters `{"Var1": "${Var1}","Var2": ${Var2}` as my JSON
}
else {
send parameters `{"Var3":"${Var3}"}` as my JSON
}
Run Code Online (Sandbox Code Playgroud)

vars.remove() 对我不起作用,因为它从变量中删除了值,但仍然在请求中发送它(例如 as "${Var1}")。

UBI*_*ACK 0

将预处理器替换为 Beanshell Sampler,它将计算布尔值a并将其作为 var:

vars.put("a", value)
Run Code Online (Sandbox Code Playgroud)

然后使用 2 个If Controller,其中每个控制器都包含一个具有不同参数的采样器。

第一个条件是 ${a},对于 be 来说,它将是 ${a} 的否定。