【问题标题】:Run first request multiple times and other request single time in a single thread在单个线程中多次运行第一个请求和其他一次请求
【发布时间】:2020-05-31 15:17:51
【问题描述】:

我在单线程中有 5 个 HTTP 请求,我想多次运行第一个请求,然后只运行一次其他请求

我不能使用多线程,因为所有请求都是相互依赖的。

【问题讨论】:

    标签: jmeter performance-testing jmeter-5.0


    【解决方案1】:

    将第一个请求放在Loop Controller 下,将循环计数作为您想要重复的次数

    除了您为线程组指定的循环值之外,JMeter 还将循环它们一定次数。例如,如果向 Loop Controller 添加一个 HTTP 请求,循环计数为 2,并将 Thread Group 循环计数配置为 3,则 JMeter 将发送总共 2 * 3 = 6 个 HTTP 请求。

    选择要多次执行的请求,然后:

    右键 -> 插入父级 -> 逻辑控制器 -> 循环控制器

    【讨论】:

    • 可以为整个线程添加循环控制器,而不是为特定请求添加循环控制器,请您告诉如何为特定 http 请求添加循环控制器
    • @Rock 右键 -> 插入父级 -> 逻辑控制器 -> 循环控制器
    • 非常感谢 user7294900,它解决了我的问题并得到了解决方案,但我有一个场景,我有 10 个 http 请求,第一个请求应该运行一次,其他 9 个请求应该运行多次,现在如果我通过了第 100 个线程,那么我的第一个请求也应该运行一次,其他 9 个请求应该运行 100 次,请帮忙。
    • @Rock 类似地,您可以标记多个请求并将循环控制器插入为父级
    【解决方案2】:

    取决于你想要达到的目标:

    1. 将只需要运行一次的请求放在Once Only Controller下,这样Sampler只会在线程组第一次迭代时执行

    2. 如果您想要更复杂/灵活的标准 - 将只需要执行一次的请求放在If Controller 下,这样您就可以指定您想要的任何标准。例如,如果您只想在第 5 次迭代期间运行采样器,请使用以下条件:

      ${__jexl3("${__jm__Thread Group__idx}" == "5",)}
      

      这样,只有在满足条件时才会执行位于 If 控制器下的采样器:

    【讨论】:

      猜你喜欢
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多