jMeter - 如果Controller仅在包含采样器时执行?

时间:2014-07-23 09:02:57

标签: if-statement controller jmeter sequence

我在jMeter中使用If控制器时出现问题。

我有一个线程组。线程组内部是一个循环控制器。每次循环执行时,它都会运行一个HTTP采样器。

我想根据此采样器的响应触发If Controller。

但是,如果控制器包含另一个采样器,则它似乎只会触发。

但我不希望它包含一个采样器。触发时要执行的步骤是JSON Path Extractor和Beanshell PostProcessor。这些用于从现有采样器的响应中提取部分JSON,然后使用此值更新Beanshell PostProcessor中的共享哈希映射。但是如果没有If Controller中的采样器,它们将无法运行。如果我把一个采样器放在那里,任何描述 - 甚至是一个虚拟的采样器,第一个采样器的响应数据都会丢失,我无法再从它那里得到JSON响应 - 然后测试就会被打破。 / p>

知道如何绕过它?

我尝试添加空白侦听器和类似的东西,但它们不会导致If Controller触发。唯一能做的就是采样器然后会破坏我的测试序列。

如果不允许Controller作为第一个采样器的子级。

1 个答案:

答案 0 :(得分:1)

是的,jmeter内部仅适用于采样器。因此,要在某个范围内运行后处理器(您的IF控制器创建范围),您需要在其中包含一个采样器。所有后处理器/定时器/监听器等实际上都附加到其范围的采样器。了解JMeter非常重要。

为了实现您的目标,您可以将Regexp提取器附加到主采样器并将所有响应体提取到某个变量。然后添加一个虚拟采样器并将该变量作为响应体。现在,您将在范围内将信息传递给提取器。