【问题标题】:JMeter: How do I stop PreProcessors from running extra timesJMeter:如何阻止预处理器运行额外的时间
【发布时间】:2017-08-25 06:16:11
【问题描述】:

JMeter 的行为在这里根本没有意义。我的项目的最小化版本如下所示:

线程组
- 外部预处理器
- 外部网络请求
- 循环控制器
..- 内部预处理器
..- 内部网络请求

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

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

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

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    在您的特定用例中,您需要 JMeter PreProcessor 是 Sampler 的 ,而不是在线程组或测试计划下。尝试使用此约定或将代码移至 Sampler 或使用 JMeter 函数。

    【讨论】:

    • 哇。这比我预期的要容易。它现在正在输出我想要的方式。非常感谢您的帮助。
    • 尽管您的解决方案适用于这种情况,但一般性陈述“预处理器应该是采样器的子级”是不正确的。在很多情况下,您希望预处理器与采样器处于相同或更高级别,并且在设计规范内。我将您的答案更改为更具体的用例。下面的答案提供了关于范围的更通用的指导。
    【解决方案2】:

    JMeter 预处理器遵循Scoping Rules,即预处理器将为位于同一级别(或更低级别)的所有采样器执行。

    因此:

    • Outer PreProcessor 预处理器将为 Outer web requestInner web request 运行
    • Inner PreProcessor 将为 Inner web request 运行(以及同一级别的所有请求)

    解决方案将移动 Outer PreProcessor 成为 Outer web request 的子代。

    更多信息:A Quick Guide to JMeter PreProcessors

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多