如何在一组请求具有相同数据字段(不同于其他组)的线程组中发出请求?

How to have requests in a thread group where a set of requests has a same data field (which is different from other sets)?

我在jmeter中有两个独立的线程组,

第一个线程组:与第一个线程组对应的所有用户负责命中一个API,它创建一个用户和return userId 作为响应

第二线程组:第二线程组对应的所有用户负责命中一个API,为创建的用户上传照片,使用userId(returned in previous response) 作为其请求数据。

我使用了 jmeter 的 InterThreadCommunication 插件,因此来自第一个线程组 API 命中的响应的用户 ID 被映射到第二个线程组 API 命中的请求数据。

问题是在线程组 2 中,我需要 运行 上传用户图像 5 次(以便有一组图像对应于每个用户)。我如何扩展 InterThreadCommunication 功能以将一个 userId 从 threadGroup1 映射到 threadGroup2 的 5 个请求(同样将另一个 userId 映射到另外 5 个请求)

当前实施:

线程组 1:

jp@gc - 线程间通信后处理器:

要将数据放入的 FIFO 队列名称:userIdList

valueToPut: $userId

线程组 2:

jp@gc - 线程间通信预处理器

要从中获取数据的 FIFO 队列名称:userIdList

存储数据的变量名:userId

Thread Group 2 request data ,我使用值作为 $userId

只需使用一次Once Only Controller and execute the request 5 times using Loop Controller

如果线程间通信插件不够灵活,无法满足您的需求,您可以随时切换到另一种在线程组之间传递值的方法,即

  1. 使用 __setProperty() and __threadNum() 函数组合将值存储在第一个线程组中,例如:

    ${__setProperty(userid_${__threadNum}, YOUR_VALUE_HERE,)}
    
  2. 使用 __P() 和 __threadNum() 函数组合来读取第二个线程组中的值,例如:

     ${__P(userid_${__threadNum},)}
    

查看 Apache JMeter Functions - An Introduction 文章以获取有关 JMeter 函数概念的更多信息。