如何在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
相关产品推荐
相关产品推荐

