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

时间:2013-01-04 10:43:53

标签: 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
}

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

3 个答案:

答案 0 :(得分:0)

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

vars.put("a", value)

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

第一个的条件是$ {a},因为它将是$ {a}的否定。

答案 1 :(得分:0)

只需使用"身体数据"标签。您可以有条件地创建JSON字符串,然后只需打印"使用普通占位符的正文数据中的变量。

答案 2 :(得分:0)

实现您想要做的最简单,最快捷的方法是使用JMeter,如果控制器(添加 - >逻辑控制器 - >如果控制器)

将if控制器添加到您正在处理的线程组中,并将表达式放在条件(默认Javascript)中返回布尔值。作为if控制器的子节点,您可以放置​​要触发的HTTP请求采样器,以防if成功。

如果您传递给JMeter的属性存在,则假设您要发送请求:

${__P(media)}.length > 0

如果控制器具有否定条件,则为另一个HTTP请求采样器检查的内容添加另一个。

你已经完成了。