Postman接口测试之正则表达式提取器实现接口关联——返回数据是json格式
当我们进行接口测试时,常常会遇到后续接口的请求参数依赖于前面接口的返回结果的情况,这就需要进行接口关联。而如果返回的数据是 JSON 格式,我们可以利用正则表达式来提取特定的值用于后续接口的参数设置。首先,在 Postman 中正常发送第一个接口请求,确保该接口能正确返回包含我们后续要提取数据的 JSON 格式的响应内容。对于依赖前面接口提取值的后续接口,在其请求参数相关位置,可以通过。值替换进去
背景介绍
- 在接口测试中,接口关联是一个很重要的概念。当一个接口的请求参数依赖于另一个接口的响应结果时,就需要进行接口关联。Postman是一款强大的接口测试工具,正则表达式提取器是其中用于提取响应数据的有效工具,通过它可以方便地实现接口关联。
1. 理解接口关联与需求场景
当我们进行接口测试时,常常会遇到后续接口的请求参数依赖于前面接口的返回结果的情况,这就需要进行接口关联。而如果返回的数据是 JSON 格式,我们可以利用正则表达式来提取特定的值用于后续接口的参数设置。非贪婪匹配则是尽可能少地匹配字符,符合我们精准提取目标数据的需求。
2. 发送初始接口请求
首先,在 Postman 中正常发送第一个接口请求,确保该接口能正确返回包含我们后续要提取数据的 JSON 格式的响应内容。例如,我们有一个获取用户信息的接口,返回的 JSON 数据可能类似如下结构:
{
"user": {
"id": "12345",
"name": "John Doe",
"email": "johndoe@example.com"
}
}
假设我们后续接口需要用到用户的 id
值,那就需要从这个响应中提取出 id
的具体内容。
3. 设置正则表达式提取器(Tests 脚本中)
在 Postman 中,打开该请求的 Tests
标签页,在这里编写 JavaScript 代码来实现正则表达式提取及相关操作。
以下是使用非贪婪匹配提取 JSON 数据中某个值的一般代码示例(假设提取上述 id
值):
// 定义正则表达式,采用非贪婪匹配模式(使用? 符号)
var regex = /"id":"(.*?)"/;
// 获取响应体数据(假设返回 JSON 格式数据)
var responseBody = pm.response.text();
// 执行正则表达式匹配
var match = responseBody.match(regex);
if (match && match.length > 1) {
// 将提取到的值设置为环境变量(方便后续接口使用),这里变量名为 user_id
pm.environment.set("user_id", match[1]);
}
在上述代码中:
/"id":"(.*?)"/
这个正则表达式的含义是:匹配双引号包裹的"id":"
字符串,然后紧接着使用(.*?)
去捕获后面直到下一个双引号出现的内容(非贪婪模式,即遇到第一个符合结束条件的就停止匹配),这个捕获的内容就是我们要提取的id
的值。- 通过
pm.response.text()
获取响应体的文本内容,然后用match
方法进行正则匹配。 - 如果匹配成功且有捕获组内容(
match.length > 1
),就将提取到的值通过pm.environment.set
方法设置为环境变量(这里命名为user_id
,你可以根据实际需求自定义变量名),以便后续接口能够方便地引用这个值作为请求参数等。
4. 在后续接口中使用提取的值
对于依赖前面接口提取值的后续接口,在其请求参数相关位置,可以通过 {{变量名}}
的方式来引用我们刚才设置的环境变量。例如,如果后续接口需要在请求路径或者请求体中传入用户 id
,可以这样写(以请求路径为例):
https://example.com/api/user/{{user_id}}
这样,当发送后续接口请求时,就会自动将前面提取到的 id
值替换进去,实现了接口之间基于 JSON 数据提取的关联操作。
更多推荐
所有评论(0)