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

JMeter中如何比对JDBC多查询行结果与JSON数组对应字段值

JMeter JDBC查询结果与JSON数组逐行匹配校验操作步骤

1 前置准备

  • 在线程组内按业务执行顺序添加两个采样器:JDBC请求(查询用户数据)、返回待校验JSON的接口请求
  • 确保JDBC查询结果的排序逻辑和JSON数组内对象的排序逻辑完全一致,避免顺序错位导致校验失败

2 提取JDBC查询结果变量

打开JDBC请求配置页,在Variable names输入框填入三个字段对应的变量名:
FirstName,LastName,Email

配置后JMeter会自动按行存储查询结果,变量命名规则为字段名_行号,行号从1开始计数:
第1行数据对应FirstName_1、LastName_1、Email_1
第2行数据对应FirstName_2、LastName_2、Email_2
同时会生成FirstName_#变量存储返回的总数据行数,本场景值为3

3 提取JSON数组的字段变量

在返回JSON的接口采样器下添加3个JSON提取器,分别提取三个字段的数组:

提取FirstName数组配置:

  • 引用名称(Reference Name):json_FirstName
  • JSON Path表达式:$.PersonalDetails[*].FirstName(如果JSON键名带空格则写$['Personal Details'][*].FirstName)
  • 匹配数字:-1(提取所有匹配结果)

提取LastName数组配置:

  • 引用名称:json_LastName
  • JSON Path表达式:$.PersonalDetails[*].LastName
  • 匹配数字:-1

提取Email数组配置:

  • 引用名称:json_Email
  • JSON Path表达式:$.PersonalDetails[*].Email
  • 匹配数字:-1

提取后变量同样从1开始计数:JSON数组第0位对应json_FirstName_1,第1位对应json_FirstName_2,以此类推,和JDBC行号一一对应

4 配置校验逻辑

推荐使用JSR223断言实现批量逐行校验,性能更高、逻辑更灵活:
在两个采样器之后添加JSR223断言,脚本语言选择groovy,填入以下代码:

// 获取总数据行数
def totalCount = vars.get("FirstName_#") as int
// 逐行校验
for(int i=1;i<=totalCount;i++){
    // 取JDBC对应行的值
    def jdbcFirstName = vars.get("FirstName_"+i)
    def jdbcLastName = vars.get("LastName_"+i)
    def jdbcEmail = vars.get("Email_"+i)
    // 取JSON对应位置的值
    def jsonFirstName = vars.get("json_FirstName_"+i)
    def jsonLastName = vars.get("json_LastName_"+i)
    def jsonEmail = vars.get("json_Email_"+i)
    // 三个字段全匹配才通过
    if(jdbcFirstName != jsonFirstName || jdbcLastName != jsonLastName || jdbcEmail != jsonEmail){
        // 标记断言失败,输出错误信息
        AssertionResult.setFailure(true)
        AssertionResult.setFailureMessage("第"+i+"行数据不匹配:JDBC值["+jdbcFirstName+","+jdbcLastName+","+jdbcEmail+"],JSON值["+jsonFirstName+","+jsonLastName+","+jsonEmail+"]")
        break
    }
}

校验结果查看

运行用例后,如果校验失败,在结果树的JSR223断言页可以看到具体的不匹配字段和值,校验通过则无异常提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:06:11