Postman接口测试之正则表达式提取器实现接口关联——返回数据是html数据
需要注意的是,当HTML结构发生变化时,可能需要相应地调整正则表达式。而且,如果HTML数据非常复杂,可能需要更精细的正则表达式或者考虑使用其他解析HTML的工具(如Cheerio.js等在Node.js环境下)来更准确地提取数据。
·
- 理解接口关联和正则表达式提取器的概念
- 接口关联:在接口测试中,一个接口的请求参数可能依赖于另一个接口的响应数据。例如,用户登录接口返回一个用户ID,后续的获取用户信息接口需要这个用户ID作为参数,这就需要进行接口关联。
- 正则表达式提取器:Postman中的正则表达式提取器可以从接口的响应数据中提取出需要的值。它通过定义正则表达式模式来匹配和提取特定的数据。
- 处理HTML返回数据的难点
- HTML数据结构复杂,包含标签、属性、文本内容等多种元素。与简单的JSON或XML数据相比,使用正则表达式提取数据时需要更加小心地构建表达式,以准确地匹配到所需的内容。
- 例如,HTML中的标签可能会嵌套,而且文本内容可能会被各种标签包围。
- 在Postman中使用正则表达式提取器提取HTML数据的步骤
- 发送请求并查看响应:
- 首先,在Postman中发送接口请求,获取包含HTML数据的响应。查看响应内容,确定需要提取的数据在HTML中的位置和特征。
- 例如,假设响应HTML中有一个包含用户昵称的
<span>
标签,如<span class="user - nickname">张三</span>
。
- 打开测试脚本编辑器:
- 在Postman的请求界面中,切换到“Tests”选项卡。这里是编写测试脚本的地方,包括使用正则表达式提取器。
- 编写正则表达式提取脚本:
- 假设要提取上述
<span>
标签中的用户昵称“张三”,可以使用以下代码:
- 假设要提取上述
- 发送请求并查看响应:
var response = pm.response.text();
// 定义正则表达式,匹配包含用户昵称的<span>标签中的文本内容
var regex = /<span class="user - nickname">(.*?)<\/span>/;
var match = response.match(regex);
if (match && match.length > 1) {
pm.environment.set("userNickname", match[1]);
}
- 解释:
- `pm.response.text()`获取响应的文本内容(HTML数据)。
- 定义正则表达式`/<span class="user - nickname">(.*?)<\/span>/`,其中`(.*?)`是一个捕获组,它会匹配`<span>`标签中的文本内容,`.*?`是一个非贪婪模式匹配,这样可以确保只匹配到最近的`</span>`标签之间的内容。
- `response.match(regex)`尝试在响应数据中匹配正则表达式。
- 如果匹配成功并且`match.length > 1`(因为`match[0]`是整个匹配的字符串,`match[1]`是捕获组中的内容),则将提取到的用户昵称设置为环境变量`userNickname`。这个环境变量可以在后续的接口请求中作为参数使用,实现接口关联。
- 验证提取结果和接口关联
- 在后续的接口请求中,可以使用
{{userNickname}}
来引用提取的用户昵称。例如,如果有一个接口需要用户昵称作为参数,可以在请求的参数部分使用这个变量。 - 发送后续接口请求,检查请求参数是否正确设置,以及接口是否能够正常关联并获取正确的数据。
- 在后续的接口请求中,可以使用
需要注意的是,当HTML结构发生变化时,可能需要相应地调整正则表达式。而且,如果HTML数据非常复杂,可能需要更精细的正则表达式或者考虑使用其他解析HTML的工具(如Cheerio.js等在Node.js环境下)来更准确地提取数据。
更多推荐
所有评论(0)