JMeter:基于用户定义变量实现多用户令牌并发HTTP请求
解决Foreach Controller无法并发发起API请求的方案
下面是三种可行的实现方式,根据你的测试场景选择:
方式一:拆分线程组实现并发
- 先在登录流程中,将每个用户的令牌保存到JMeter全局属性中,比如在登录请求的JSR223 PostProcessor中添加代码:
int index = Integer.parseInt(vars.get("__jm__Foreach Controller__idx")); props.put("token_" + index, vars.get("token")); - 创建一个新线程组,将线程数设置为
${numberOfUsers},确保该线程组在登录线程组之后执行(测试计划中勾选「独立运行每个线程组」) - 在新线程组的HTTP请求中,用
${__P(token_${__threadNum},)}获取对应线程的令牌,填入请求头或参数中发起API请求
方式二:使用JSR223 Sampler + Java线程池
- 先汇总所有令牌到一个列表变量:在Foreach Controller结束后,添加JSR223 PostProcessor执行以下代码:
List<String> tokenList = new ArrayList<>(); int userCount = Integer.parseInt(vars.get("numberOfUsers")); for (int i = 0; i < userCount; i++) { tokenList.add(vars.get("token_" + i)); } vars.putObject("tokenList", tokenList); - 添加JSR223 Sampler,用Java线程池实现并发请求:
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; List<String> tokens = vars.getObject("tokenList"); ExecutorService executor = Executors.newFixedThreadPool(Integer.parseInt(vars.get("numberOfUsers"))); for (String token : tokens) { executor.submit(() -> { CloseableHttpClient client = HttpClients.createDefault(); try { HttpPost request = new HttpPost("你的目标API地址"); request.addHeader("Authorization", "Bearer " + token); // 按需添加请求体、其他请求头 client.execute(request); // 可添加响应日志或结果处理逻辑 } catch (Exception e) { log.error("API请求失败", e); } finally { client.close(); } }); } executor.shutdown(); executor.awaitTermination(5, TimeUnit.MINUTES); // 设置合理的超时时间
方式三:CSV文件中转+多线程读取
- 在登录请求的JSR223 PostProcessor中,将每个令牌写入CSV文件:
FileWriter writer = new FileWriter("tokens.csv", true); writer.write(vars.get("token") + "\n"); writer.close(); - 创建新线程组,线程数设为
${numberOfUsers},添加CSV数据集配置:- 文件路径选择刚才生成的
tokens.csv - 变量名设为
currentToken
- 文件路径选择刚才生成的
- 在该线程组的HTTP请求中,使用
${currentToken}作为令牌发起请求,同样要确保登录线程组先执行
内容的提问来源于stack exchange,提问作者fullstack
相关产品推荐
相关产品推荐

