5

我正在使用 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() 对我不起作用,因为它从变量中删除了值,但仍将其发送到请求中(例如 as "${Var1}")。

4

3 回答 3

0

只需使用“身体数据”选项卡。您可以有条件地创建 JSON 字符串,然后使用普通占位符在正文数据中“打印”变量。

于 2014-09-05T01:55:36.880 回答
0

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

vars.put("a", value)

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

第一个条件将是 ${a} 并且它将是 ${a} 的否定。

于 2013-01-04T14:32:53.220 回答
0

实现您想要做的最简单和最快的方法是使用 JMeter if controller (Add -> Logic controller -> If controller)

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

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

${__P(media)}.length > 0

您为刚刚使用另一个 HTTP 请求采样器检查的内容添加另一个带有否定条件的 if 控制器。

你完成了。

于 2017-02-10T12:12:02.000 回答