JMeter:如何阻止预处理器运行额外的时间

JMeter:如何阻止预处理器运行额外的时间,jmeter,Jmeter,杰米特的行为在这里毫无意义。我的项目的最小化版本如下所示: 线程组 -外部预处理器 -外部web请求 -环路控制器 ..-内部预处理器 ..-内部web请求 线程组的线程和循环计数为1,循环控制器的循环计数为6,我希望外部预处理器运行一次,内部预处理器运行6次(在每种情况下,与相关web请求运行的次数相同) 相反,外部运行7次,内部运行6次(由控制台日志记录确定)。这对项目结构没有任何意义,那些额外的预处理器运行似乎把我的变量搞乱了 为什么JMeter会这样做,如何让它停止?在您的特定用例中,您

杰米特的行为在这里毫无意义。我的项目的最小化版本如下所示:

线程组
-外部预处理器
-外部web请求
-环路控制器
..-内部预处理器
..-内部web请求

线程组的线程和循环计数为1,循环控制器的循环计数为6,我希望外部预处理器运行一次,内部预处理器运行6次(在每种情况下,与相关web请求运行的次数相同)

相反,外部运行7次,内部运行6次(由控制台日志记录确定)。这对项目结构没有任何意义,那些额外的预处理器运行似乎把我的变量搞乱了


为什么JMeter会这样做,如何让它停止?

在您的特定用例中,您需要JMeter预处理器是采样器的子级,而不是线程组或测试计划下的子级。尝试使用此约定或将代码移动到采样器或使用JMeter函数。

JMeter预处理器如下,即将对位于同一级别(或更低级别)的所有采样器执行预处理器

因此:

  • 外部预处理器
    将为
    外部web请求
    内部web请求运行预处理器
  • 内部预处理器
    将针对
    内部web请求
    (以及同一级别上的所有请求)运行
解决方案将
外部预处理器
移动为
外部web请求
的子级


更多信息:

Wow。这比我想象的要容易。它现在正在输出我想要的结果。非常感谢您的帮助。虽然您的解决方案对于这种情况是正确的,但一般的说法“预处理器应该是采样器的孩子”是不正确的。在许多情况下,您希望预处理器与sampler处于相同或更高的级别,并且在设计规范范围内。我将您的答案更改为更具体的用例。下面的答案提供了关于范围的更一般的指导。