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

如何在JMeter中遍历Excel每行数据并与JSON响应做字段匹配校验

JMeter Excel行数据与接口JSON响应匹配校验实现方案

1. 前置依赖准备

JMeter默认不支持Excel读取,需提前导入Apache POI相关依赖包:

  • 下载对应版本的poi-x.x.x.jar、poi-ooxml-x.x.x.jar
  • 将jar包放入JMeter安装目录的lib/ext文件夹下,重启JMeter生效

2. 预加载Excel所有有效数据到内存

在线程组下添加 JSR223 前置处理器,使用Groovy脚本读取Excel数据,组合为唯一标识存入全局集合,避免后续每次校验都重复读Excel:

import org.apache.poi.ss.usermodel.WorkbookFactory
import java.util.HashSet

// 替换为你的Excel文件实际路径
def excelPath = "C:/your_path/user_data.xlsx"
def workbook = WorkbookFactory.create(new File(excelPath))
def sheet = workbook.getSheetAt(0)
def validDataSet = new HashSet()

// 若Excel有表头,从第2行(索引1)开始遍历,无表头则从索引0开始
for (int i = 1; i <= sheet.lastRowNum; i++) {
    def row = sheet.getRow(i)
    // 索引对应Excel列:0=Last_Name、1=ID、2=First_Name,根据实际列顺序调整
    def lastName = row.getCell(0).getStringCellValue().trim()
    def userId = row.getCell(1).numericCellValue.toInteger()
    def firstName = row.getCell(2).getStringCellValue().trim()
    // 按规则拼接唯一键,分隔符选择不会出现在字段值中的字符即可
    def uniqueKey = "${userId}_${firstName}_${lastName}"
    validDataSet.add(uniqueKey)
}

// 将有效集合存入JMeter全局属性,供后续断言调用
props.put("user_valid_set", validDataSet)
workbook.close()

3. 提取接口响应的目标字段

在HTTP接口请求采样器下添加 JSON提取器,配置如下:

  • 引用名称:resp_id、resp_first_name、resp_last_name
  • JSON路径表达式:$.id、$.first_name、$.last_name
  • 匹配数字:0(取第一个匹配结果,若返回多条可填-1提取所有)

4. 编写匹配断言逻辑

在HTTP接口请求采样器下添加 JSR223 断言,校验接口返回组合是否在Excel有效集合内:

def validSet = props.get("user_valid_set")
// 拼接规则与Excel侧完全一致
def respUniqueKey = "${resp_id as int}_${resp_first_name.trim()}_${resp_last_name.trim()}"

if (!validSet.contains(respUniqueKey)) {
    AssertionResult.failure = true
    AssertionResult.failureMessage = "校验失败:接口返回的用户组合 ${respUniqueKey} 不存在于Excel数据中"
}

补充说明

  • 若接口返回多条用户数据,可在JSON提取器提取所有结果后,循环遍历每条数据的组合是否在集合内即可
  • 采用HashSet存储有效数据的判断时间复杂度为O(1),远优于逐行遍历Excel对比的效率,适合Excel数据量较大的场景
  • 该方案默认兼容xls、xlsx两种Excel格式,无需额外调整脚本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:24:02