1. 理解接口关联和正则表达式提取器的概念
    • 接口关联:在接口测试中,一个接口的请求参数可能依赖于另一个接口的响应数据。例如,用户登录接口返回一个用户ID,后续的获取用户信息接口需要这个用户ID作为参数,这就需要进行接口关联。
    • 正则表达式提取器:Postman中的正则表达式提取器可以从接口的响应数据中提取出需要的值。它通过定义正则表达式模式来匹配和提取特定的数据。
  2. 处理HTML返回数据的难点
    • HTML数据结构复杂,包含标签、属性、文本内容等多种元素。与简单的JSON或XML数据相比,使用正则表达式提取数据时需要更加小心地构建表达式,以准确地匹配到所需的内容。
    • 例如,HTML中的标签可能会嵌套,而且文本内容可能会被各种标签包围。
  3. 在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`。这个环境变量可以在后续的接口请求中作为参数使用,实现接口关联。
  1. 验证提取结果和接口关联
    • 在后续的接口请求中,可以使用{{userNickname}}来引用提取的用户昵称。例如,如果有一个接口需要用户昵称作为参数,可以在请求的参数部分使用这个变量。
    • 发送后续接口请求,检查请求参数是否正确设置,以及接口是否能够正常关联并获取正确的数据。

需要注意的是,当HTML结构发生变化时,可能需要相应地调整正则表达式。而且,如果HTML数据非常复杂,可能需要更精细的正则表达式或者考虑使用其他解析HTML的工具(如Cheerio.js等在Node.js环境下)来更准确地提取数据。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐