You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JMeter中自定义API请求体生成随机多订单及产品(CSV数据源)

在JMeter中实现随机多订单API请求体的配置方法

步骤1:准备Item数据的CSV文件

创建CSV文件(比如命名为items.csv),每行存放一个item值,格式示例:

item001
item002
item003
item004
...

步骤2:添加JSR223 PreProcessor生成请求体

在目标HTTP请求元件前,添加JSR223 PreProcessor,选择Groovy作为脚本语言,粘贴以下脚本:

import groovy.json.JsonBuilder
import java.util.Random

// 读取CSV文件,加载所有item数据
def csvFilePath = "path/to/your/items.csv" // 替换为实际CSV文件路径
def allItems = new File(csvFilePath).readLines()

Random random = new Random()
// 随机生成1-10个订单
int orderCount = random.nextInt(10) + 1
def orderList = []

for (int o = 0; o < orderCount; o++) {
    // 每个订单随机生成1-20个产品
    int productCount = random.nextInt(20) + 1
    def productList = []
    
    for (int p = 0; p < productCount; p++) {
        // 从CSV列表中随机选取一个item
        def randomItem = allItems.get(random.nextInt(allItems.size()))
        productList.add([
            productId: String.valueOf(random.nextInt(9999) + 1), // 随机生成productId
            value: [[item: randomItem]]
        ])
    }
    
    orderList.add([
        orderId: String.valueOf(System.currentTimeMillis() + o), // 生成唯一orderId
        products: productList
    ])
}

// 构建JSON请求体结构
def jsonBuilder = new JsonBuilder()
jsonBuilder {
    multipleOrders orderList
}

// 将生成的JSON存入变量,供HTTP请求调用
vars.put("requestBody", jsonBuilder.toPrettyString())

步骤3:配置HTTP请求的请求体

在HTTP请求的Body Data区域,直接引用生成的变量:

${requestBody}

关键注意事项

  • CSV路径设置:可使用绝对路径,或相对JMeter安装目录下bin文件夹的相对路径
  • 字段自定义:若productId或orderId需要遵循业务规则,直接修改脚本中对应字段的生成逻辑即可
  • 性能优化:必须选择Groovy作为脚本语言,其执行效率远高于BeanShell等其他脚本语言

内容的提问来源于stack exchange,提问作者Raxon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:25:40