news 2026/10/9 7:53:37

接口测试流程的三个核心环节

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
接口测试流程的三个核心环节

一 接口参数化

接口参数化允许你用不同的数据多次运行同一个请求,从而实现数据驱动测试。

1、使用变量(环境/全局变量)

这是最基础的方式,将请求中易变的部分(如URL、参数)替换为变量占位符。

  • 定义变量:在 Postman 的【variables】 -【Environment】/【Globals】中定义变量,例如base_url。

  • 引用变量:在请求的 URL、Headers、Body 中使用双花括号引用,如{{base_url}}/api/users

【补充】在postman中全局变量和环境变量的使用区别

2、使用数据文件(CSV/JSON)进行批量测试

这是实现数据驱动的核心方法,适合用多组数据验证同一接口。

  • 准备数据文件:

    • CSV文件:第一行是变量名,后续每行是一条测试数据。例如:username,passworduser1,pwd1。

    • JSON文件:必须是对象数组,每个对象代表一次迭代的数据。例如:[{"username":"u1","password":"p1"}, ...]。

  • 执行批量测试:使用Collection Runner,选择集合,在Data选项卡中上传 CSV 或 JSON 文件,设置迭代次数(Iterations),Postman 会自动用文件中的数据替换请求中的变量并逐行执行。

3、使用内置动态变量

Postman内置了动态变量,用于生成一次性数据,如时间戳、随机数等,适合防重放或生成唯一标识。

  • {{$guid}}:生成唯一 GUID。

  • {{$timestamp}}:当前时间戳(秒)。

  • {{$randomInt}}:0-1000 的随机整数。

4、使用前置脚本(Pre-request Script)生成参数--动态传参

对于需要复杂逻辑生成的参数(如签名、加密参数),可以在请求发送前用 JavaScript 脚本生成。

示例:生成13位时间戳并存入环境变量。

// Pre-request Script const ts = Date.now(); pm.environment.set("ts", ts);

pm.enviroment.set()就是用来动态传参的。它通常写在Pre-request Script(前置脚本)或Tests(后置断言脚本)中。

4.1、配套的常用操作

有set(存),就有对应的get(取)和unset(删除):

javascript

// 1. 设置(存) pm.environment.set("token", "abc123"); // 2. 获取(取):读取当前环境变量的值 const myToken = pm.environment.get("token"); console.log(myToken); // 控制台打印 abc123 // 3. 删除(清空) pm.environment.unset("token"); // 4. 替换:把字符串里的 {{变量名}} 替换成实际值 const url = pm.environment.replaceIn("{{base_url}}/api/user");

5、真实工作流演示(最经典的用法)

假设你有两个接口:1. 登录接口和2. 获取用户信息接口。
要求:必须先登录拿到token,才能请求第二个接口。

第一步:在“登录接口”的 【scripts】标签页写脚本

javascript

// 1. 获取登录接口返回的 JSON 数据 const res = pm.response.json(); // 2. 提取其中的 token 字段 const myToken = res.token; // 3. 把 token 存入当前环境变量中(重点就是这一句!) pm.environment.set("auth_token", myToken);

代码执行后,Postman 右侧“眼睛图标”里的环境变量中,就会自动多出一个auth_token,它的值就是刚刚获取到的真实 token。

第二步:在“获取用户信息接口”中引用

  • 在 Headers 里写:Authorization: Bearer {{auth_token}}

  • 当你发送第二个请求时,Postman 会自动用刚才存进去的真实 token 替换掉{{auth_token}}。

5.1、token过期(难+)

在实际自动化测试中,token 是有有效期的。 如果 token 过期,脚本会报错。

解决办法:通常是在前置脚本(Pre-request Script)中增加一个判断逻辑,或者直接用一个独立的请求先刷新 token 再跑后续用例;如果是大型项目,我会用 Python + Requests + Pytest 框架结合 Fixture 来处理 token 的自动刷新和前置依赖。”

二、环境变量管理

环境变量管理用于在不同环境(开发、测试、生产)之间无缝切换配置,避免硬编码。

1. 创建与管理环境

  • 选择环境

  • 在 Postman 的【variables】 -【Environment】中添加。

2. 变量的作用域与优先级

Postman 的变量有多种作用域,当同名变量存在时,优先级高的会覆盖优先级低的。优先级从高到低依次为:
局部变量 (Local) > 数据变量 (Data) > 环境变量 (Environment) > 集合变量 (Collection) > 全局变量 (Global)。

  • 实践建议:将通用配置(如超时时间)放在全局变量中,将环境相关的配置(如base_url)放在环境变量中,便于按环境覆盖。

3. 在请求和脚本中使用

变量定义好之后,最关键的一步就是如何在请求和脚本中正确引用它。下面分别介绍在请求界面和脚本代码中的两种使用方式。

  • 在请求中:直接使用{{variable_name}}引用。无论是 URL、Headers 还是 Body 中,只要出现双花括号包裹的变量名,Postman 都会在发送请求前自动将其替换为当前生效的变量值。例如,在 URL 中写{{base_url}}/api/users,实际发送时会被替换为https://api.example.com/api/users。

  • 在脚本中:使用pm.environment.get("variable_name")读取,使用pm.environment.set("variable_name", "value")写入。这种方式适合在 Pre-request Script 或 Tests 中动态读取和更新变量,例如从登录响应中提取 token 后存入环境变量,供后续请求使用。

补充说明:在请求中引用变量时,如果变量不存在,Postman 会保留原始的双花括号文本并给出提示;而在脚本中使用pm.environment.get()读取不存在的变量时,会返回undefined,因此建议在读取前先判断变量是否存在,避免脚本报错。

4. 导出与团队协作

你可以通过Manage Environments中的Export功能,将环境导出为 JSON 文件,以便在团队中共享或在多台机器间同步。建议将不含敏感信息的环境文件纳入版本控制。

三、断言校验

断言用于自动验证接口响应是否符合预期,是自动化测试的核心。Postman 使用 JavaScript 在Tests标签页中编写断言。

1. 核心语法

推荐使用pm.test()和pm.expect()组合,语法更直观。

  • pm.test("测试名称", function () { ... }):定义一个测试用例。

  • pm.expect(实际值).to.断言方法(期望值):进行断言比较。

2. 常见断言类型与示例

断言类型示例代码说明
状态码pm.response.to.have.status(200);验证HTTP状态码为200。
响应体包含字符串pm.expect(pm.response.text()).to.include("success");验证响应文本包含特定字符串。
JSON字段值pm.expect(pm.response.json().id).to.eql(156894);验证JSON响应中id字段的值等于156894。
JSON字段存在pm.expect(pm.response.json()).to.have.property("token");验证JSON响应中包含token字段。
响应时间pm.expect(pm.response.responseTime).to.be.below(500);验证响应时间小于500毫秒。
响应头pm.response.to.have.header("Content-Type");验证响应头包含Content-Type字段。

3. 高级断言:JSON Schema 校验

对于复杂的JSON结构,可以使用tv4库(Postman内置)进行 Schema 校验,确保数据结构完全符合规范。

javascript

const schema = { "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "number" } }, "required": ["name", "age"] }; pm.test("Validate JSON Schema", function () { pm.expect(tv4.validate(pm.response.json(), schema)).to.be.true; });

4. 查看断言结果

发送请求后,Postman 会在底部的Test Results标签页中显示所有断言的执行结果。绿色PASS表示通过,红色FAIL表示失败,并会显示具体的错误信息(如“expected response to have status code 200 but got 404”)。

四、使用场景--数据驱动测试

比如登录功能接口测试 参数用户名和密码会存在多个

正确的,错误的这样就需要不停的去修改很麻烦,这个时候就可以使用参数化去解决。

1、一个txt或者csv文件

2、参数的value就不能写具体的值,而是引用参数{{参数名}}(参数名和文件中的名字保持一致)

3、run的时候选择电脑端的csv文件执行即可(目前收费)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 7:52:45

长时间 AI 任务怎么让用户放心?队列、进度、取消与状态反馈

用户上传一个视频、文档或一批图片后,最容易焦虑的不是等待本身,而是等待期间系统只显示一个转圈图标。页面刷新后看不到任务,进度停在 99%,点击取消没有反应,失败后又只剩“处理异常”。这些体验问题背后通常是同一个…

作者头像 李华
网站建设 2026/10/9 7:48:58

LHE7909肌电信号采集实战:从硬件配置到Python数据分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/9 7:48:01

Spring Boot短信模块高可用设计:可靠性、可观测性与可运维性

1. 为什么“发个短信”在Spring Boot里反而成了高频故障点?“Java短信接口开发对接全流程”——这个标题听起来平平无奇,甚至有点过时。毕竟,短信早不是什么新技术,连我带的实习生第一周就能用RestTemplate调通一个HTTP接口。但过…

作者头像 李华
网站建设 2026/10/9 7:46:37

高并发论坛系统全链路测试:从单元测试到CI/CD发布门禁

最近一直在折腾一个高并发论坛系统的全链路测试,从单元测试到接口自动化,再叠上性能测试和 CI/CD 流水线,前后跑了将近一个月。很多测试同学这三项都单独做过,但真要让它们像齿轮一样咬合成一条自动触发的验证链路,并且…

作者头像 李华