我正在使用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}"
)。
答案 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请求采样器检查的内容添加另一个。
你已经完成了。