当前位置: 首页 > news >正文

Java中数据驱动测试的多接口关联处理

Excel数据准备

在原有的Excel测试数据表格中新增一列“提取响应”,用于维护接口请求后需要提取的响应信息,该列数据格式为JSON字符串。例如:

接口名称请求参数提取响应
登录接口{“username”:“admin”,“password”:“123456”}{“token”:“$.data.token”}
查询接口{“userId”:“{{token}}”}{“userInfo”:“$.data.user”}

实现方案

1. 提取响应功能实现

在框架中增加响应提取逻辑:

// 接口请求完成后执行响应提取
public void extractResponse(Response response, String extractRules) {// 1. 解析extractRules JSON字符串JSONObject rules = JSON.parseObject(extractRules);// 2. 遍历提取规则for (Map.Entry<String, String> entry : rules.entrySet()) {String varName = entry.getKey();  // 变量名,如tokenString jsonPath = entry.getValue(); // JSON路径,如$.data.token// 3. 使用JsonPath从响应中提取值Object value = JsonPath.read(response.getBody(), jsonPath);// 4. 存入环境变量区EnvironmentVars.put(varName, value);}
}

2. 环境变量区设计

创建环境变量存储区,使用HashMap实现:

public class EnvironmentVars {private static final Map<String, Object> vars = new HashMap<>();public static void put(String key, Object value) {vars.put(key, value);}public static Object get(String key) {return vars.get(key);}public static void clear() {vars.clear();}
}

3. 变量引用替换机制

实现变量引用替换功能:

public String replaceVariables(String input) {// 1. 定义正则表达式匹配{{XXX}}格式Pattern pattern = Pattern.compile("\\{\\{(.*?)\\}\\}");Matcher matcher = pattern.matcher(input);StringBuffer sb = new StringBuffer();// 2. 查找并替换所有匹配项while (matcher.find()) {String varName = matcher.group(1); // 获取变量名Object value = EnvironmentVars.get(varName); // 从环境变量获取值// 3. 替换匹配内容if (value != null) {matcher.appendReplacement(sb, value.toString());} else {// 变量不存在时保留原样或抛出异常matcher.appendReplacement(sb, matcher.group());}}matcher.appendTail(sb);return sb.toString();
}

引用规则配置

框架支持自定义变量引用规则,可通过配置文件指定:

# 引用规则配置
variable.prefix={{ 
variable.suffix=}}

使用时根据配置自动适配不同风格的引用方式:

  • Postman风格:{{token}}
  • JMeter风格:${token}
  • 自定义风格:如#token#

应用场景示例

  1. 登录-查询流程

    • 登录接口返回token
    • 后续查询接口在请求参数中使用{{token}}引用
  2. 订单创建-支付流程

    • 创建订单接口返回orderId
    • 支付接口在请求参数中使用{{orderId}}引用
  3. 多步骤数据依赖

    • 第一步接口返回的数据
    • 第二步接口同时引用多个变量:{"id":"{{userId}}","token":"{{token}}"}
http://www.dtcms.com/a/470427.html

相关文章:

  • 用 TypeScript进行Hardhat测试
  • 淘宝网站建设那么便宜营销型网站开发 语言选择
  • ps做网站尺寸多少像素深圳网站建设团队
  • 做私房蛋糕在哪些网站写东西wordpress 文章 pin
  • 【ProtoBuf】快速上手
  • DAC1282寄存器介绍以及模式操作介绍
  • winlogon!SignalManagerResetSignal函数分析之循环的次数和信号管理数组的->20h有关
  • 从fat看文件系统的加载流程走读
  • patchmatch翻译总结
  • 绍兴免费自助建站wordpress 屏蔽ip
  • TCP 网络编程笔记:TcpListener、TcpClient 与核心用法
  • 群晖的网站开发搜索百度一下
  • 【词根】2025-10-11词根学习
  • 【MFC】项目源码过大,不影响项目设置的打包办法
  • 做聚美优品网站得多少钱wordpress 知更鸟 公告
  • 网站的中英文翻译是怎么做的公司手机网站建设价格
  • 基层建设期刊在哪个网站被收录想做棋牌网站怎么做
  • 商丘网站建设广告ui培训哪里好
  • 微博上如何做网站推广媒介
  • MongoDB 读写分离中 实现强制走主读注解
  • Java-146 深入浅出 MongoDB 数据插入、批量写入、BSON 格式与逻辑查询and or not操作指南
  • EasyExcel实现普通导入导出以及按模板导出excel文件
  • ubuntu 24.10安装MongoDB
  • 开源新经济:Web4.0时代的社区激励模型
  • NXP iMX8MM ARM 平台 Weston RDP 远程桌面部署测试
  • 低代码的系统化演进:从工具逻辑到平台架构的技术解读
  • 告别“时间战“:清北AI原创学习力模型,开启教育效率革命
  • 东莞市电商网站建设做室内概念图的网站
  • PowerShell 递归目录文件名冲突检查脚本(不区分大小写)
  • STM32项目分享:基于STM32的泳池防溺水检测手环