04_关联数据--json提取器和正则表达式

本文介绍了在接口测试过程中如何利用正则表达式提取器和JSON提取器进行数据关联。这两种方法可以帮助测试人员从上一个接口请求的响应中提取所需数据,并将其用于后续的测试步骤。

前言

  • 在开展接口测试的过程中,我们会发现很多接口需要依赖前面的接口,需要我们动态从前面的接口返回中提取数据,也就是我们通常说的关联。
  • 关联通俗来讲就是把上一次请求的返回内容中的部分截取出来保存为参数,用来传递给下一个请求使用。

一、使用正则表达式提取器实现接口关联

正则表达式提取器,见名知意就是使用正则表达式的方法把我们需要提取的内容通配出来。
原理:通过左右二边不变的边界来提取中间变的返回值
使用方法:

1. 添加方式:在需要获得数据的请求“1.获取token” 右击右键-->后置处理器-->选择正则表达式提取器

2.在后面的接口中使用${token}引用

二、使用Json提取器实现接口关联

使用场合:接口关联,当前一个接口返回的数据类型为json格式的数据,需要从返回的json数据中提取数据。

1. 添加方式:在需要获得数据的请求“1.token” 右击右键-->后置处理器-->选择JSON Extractor

<think>嗯,用户想用JMeter测试CRMEB的获取地址列表新增地址接口,还要实现登录关联,用JSON正则表达式提取器。首先,我得理清楚整个流程。CRMEB应该是一个电商系统,地址管理需要登录后的权限,所以必须处理登录后的token或者session。 首先,用户需要模拟登录,获取token,然后在后续的地址接口中使用这个token。JMeter中通常用后置处理器来提取数据,比如正则表达式提取器JSON提取器。根据引用里的信息,JSON提取器适用于响应是JSON格式的情况,而正则表达式更灵活,但可能复杂一些。 那登录接口的响应如果是JSON,用JSON提取器更方便,比如提取token字段。然后保存为变量,比如token。之后在地址列表新增地址的请求中,需要添加HTTP信息头管理器,把token放在Authorization头里,或者可能是Cookie,但根据引用[4],使用Cookie管理器可能更简单,不过有时候需要手动处理。 接下来,测试地址列表新增地址接口,这两个接口应该都是需要认证的。所以步骤大概是:线程组中添加登录请求,提取token,然后添加获取地址列表新增地址的HTTP请求,并在这些请求中引用token。 需要注意的是,可能需要关联不同的线程组,或者同一个线程组内的顺序。根据引用[3][4],跨线程组可能需要使用属性,但如果是同一个线程组的话,直接变量传递即可。 另外,用户可能需要参数化新增地址的请求,比如地址信息,这可以通过CSV数据文件或者随机变量来处理。但用户的问题里没有提到参数化,可能暂时不需要。 在思考过程中,还要考虑是否需要断言来验证接口返回是否正确,比如检查地址列表是否返回200状态码,或者新增地址后是否成功。但用户的问题主要关注关联提取器的使用,所以可能这部分可以简要提及。 最后,确保每一步的配置正确,比如HTTP请求的方法是否正确,POST新增地址可能需要消息体数据,而获取地址列表可能是GET。同时,在HTTP信息头管理器中设置正确的Content-Type,比如application/json。 可能遇到的坑:token提取不正确导致后续接口认证失败,需要检查提取器的路径或正则表达式是否正确。还有可能需要处理动态的token,比如带有时间戳或其他变量,这时候正则表达式可能需要更灵活的匹配。 总结步骤:配置线程组,登录请求,提取token,设置HTTP头或Cookie,添加地址相关请求,验证结果,使用监听器查看结果。</think>### 分步解决方案:JMeter测试CRMEB地址接口与登录关联 #### 一、测试流程设计 1. **场景分析** CRMEB的地址管理功能需登录后操作,需先通过登录接口获取认证凭证(如token),再在地址列表查询新增接口的请求头中携带该凭证[^1][^2]。 2. **测试结构** ``` 测试计划 └─ 线程组 ├─ 登录请求(提取token) ├─ 获取地址列表请求(携带token) └─ 新增地址请求(携带token) ``` --- #### 二、登录关联实现(JSON/正则表达式提取器) 1. **添加登录请求** - **HTTP请求**:配置登录接口URL、方法(通常为POST)、请求体(如用户名/密码)[^3]。 - **后置处理器**:根据响应数据类型选择提取器- **JSON提取器**(推荐) 若响应为JSON格式(如`{"code":200,"token":"abc123"}`): ```json 变量名:token JSON路径表达式:$.token 默认值:NOT_FOUND ``` - **正则表达式提取器** 若响应为文本或HTML: ``` 引用名称:token 正则表达式:"token":"(.*?)" 模板:$1$ ``` 2. **传递token到后续请求** - 在地址列表新增接口请求中,添加 **HTTP信息头管理器**,设置: ``` Authorization: Bearer ${token} Content-Type: application/json ``` - 或通过 **HTTP Cookie管理器** 自动管理会话(需系统支持Cookie鉴权)[^4]。 --- #### 三、地址接口测试配置 1. **获取地址列表接口** - **HTTP请求**: - 方法:GET - URL:`/api/address/list` - **断言**:添加响应断言验证状态码为200,或检查返回数据格式。 2. **新增地址接口** - **HTTP请求**: - 方法:POST - URL:`/api/address/add` - 请求体(JSON格式参数): ```json { "consignee": "张三", "phone": "13800138000", "address": "北京市海淀区" } ``` - **参数化**:使用`${__RandomString(10)}`动态生成测试数据--- #### 四、完整JMeter元件配置示例 ```java 测试计划 └─ 线程组 ├─ HTTP请求:登录接口 │ ├─ 后置处理器 → JSON提取器(token) ├─ HTTP信息头管理器(携带${token}) ├─ HTTP请求:获取地址列表 │ ├─ 响应断言(验证状态码) ├─ HTTP请求:新增地址 │ ├─ 响应断言(验证操作结果) └─ 查看结果树/聚合报告 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值