365bet最稳定网址-365bet官网注册开户-77365bet体育在线投注

从入门到实战:一篇文章掌握接口测试与 Postman 全流程

从入门到实战:一篇文章掌握接口测试与 Postman 全流程

🚀 这是我在 B 站课程《接口测试的简介与分类》(点击直达)学习过程中的详细笔记与实操总结,面向接口测试初学者与自动化测试入门者,希望对你有所启发。

🌐 接口测试的简介与分类❓ 什么是接口测试?接口测试是指对系统组件之间的数据传递、业务逻辑接口等内容进行测试,验证各模块间是否能正确交互与协作。🔁

📂 接口测试分类:

外部接口测试系统对接外部第三方服务,如支付接口、物流接口,主要验证正向功能。○ 只需验证正例(接口是否返回成功)✅

内部接口测试○ ① 内部调用接口:模块之间对接使用,如预算系统与承保系统。■ 只需验证正例○ ② 开放给外部的内部接口:业务核心接口,如 App 端调用后端接口。■ 需验证正例 + 异常 + 权限 + 安全性

分类

典型场景

测试重点

扩展测试点

外部接口

第三方支付、物流查询

正向流程(如支付下单 - 回调通知)

网络异常(断网、超时)、限流处理

内部接口

电商系统“库存扣减”与“订单创建”对接

数据一致性(库存扣减失败时订单回滚)

并发调用(多用户同时下单锁机制)

开放内部接口

App 端用户登录接口

权限校验、SQL 注入防护

敏感数据加密(密码传输加密)🔒

🔁 接口测试的流程与用例设计1️⃣ 熟悉接口

获取方式:○ 查看接口文档○ 抓包工具(如 Charles/Fiddler)观察请求

熟悉内容:○ 接口地址、请求方式(GET/POST等)○ 鉴权机制(Token/Cookie)○ 请求参数与响应结构○ 状态码及错误码定义

2️⃣ 编写接口测试用例

用例设计思路:

正例:○ 合理入参 + 正确鉴权 → 返回成功结果

反例:○ 鉴权类:Token 缺失、错误、过期○ 参数类:参数为空、格式错误、类型/长度不符○ 业务类:错误码验证、边界值、分页逻辑○ 安全类:黑名单用户、访问频率限制、权限验证

3️⃣ 执行接口测试

使用 Postman 编写请求,管理集合和环境变量

手动调试,确认功能逻辑正确

4️⃣ 持续集成

使用 Newman 执行 Postman 脚本

将测试集成至 Jenkins 流水线,输出测试报告,并通过邮件/钉钉同步结果 📩

🧰 Postman 简介与介绍界面说明

Home:主页

Workspaces:工作空间管理

Collections:接口集合管理

APIs:API 文档管理

Environments:环境变量与全局变量

Mock Server:虚拟服务器

Monitors:定时监控器

History:历史请求记录

请求页面说明

Params:GET 请求参数

Authorization:设置 Token、Basic Auth 等鉴权方式

Headers:请求头(如 Content-Type、Cookie 等)

Body(POST 请求参数):

none:不传参数

form-data:支持键值对和文件

x-www-form-urlencoded:表单键值对

raw:json、text、xml、html、JavaScript、text等原始格式

binary:文件上传(二进制)

pre-request script:请求前执行 JS 脚本

tests:请求后执行断言

cookies:管理 Cookie 信息

响应页签说明

Body:返回内容

Pretty:以 Json、html、XML 等格式查看数据

Raw:文本方式查看数据

Preview:网页方式查看数据

Cookies:响应中返回的 Cookie

Headers:响应头

Test Results:断言执行结果

状态码与响应信息:

200:OK

响应时间(如 681ms)

响应大小(如 343B)

面试题Get请求和Post请求的区别

get 请求一般是获取数据,post 请求一般是提交数据。

post 请求比 get 请求更安全。

本质区别是传参方式不同:

get 请求在地址栏后面以 ? 方式传参,多个参数用 & 分隔。

post 请求在 body 以表单方式传参。

环境变量与全局变量

环境变量:限定于特定环境(如 dev/test/prod),variable 命名必须一致,接口地址中使用 。

全局变量:所有环境、所有接口共享,跨接口共享数据(如登录 Token、用户 ID)。

获取环境变量和全局变量的值通过 。

类型

作用域

典型用途

优先级(冲突时)

环境变量

限定于特定环境

不同环境的配置差异(API 域名、端口)

高于全局变量

全局变量

所有环境共享

跨接口共享数据

低于环境变量

接口关联JSON 提取器第一个接口:

//使用json提取器提取accesss_token值。//把返回的字符串格式的数据转换成对象的形式。var result = JSON.parse(responseBody);//把access_token设置为全局变量pm.globals.set("access_token",result.access_tokern);

第二个接口:

{{access_token}}

正则表达式提取器第一个接口:

//使用正则表达式提取器实现接口关联,match匹配。var result = responseBody.match(new RegExp('"access_token":"(.*?)"')) console.log(result[1]);//设置为全局变量pm.globals.set("access_token",result[1])

第二个接口:

{{access_token}}

⚡ 动态参数Postman 内置动态参数:

1. 时间与日期类 ⏰

参数

格式示例

典型用途

1689345678(秒级)

生成当前时间戳(如签名计算)

2025-06-18T12:34:56Z

随机日期(测试订单有效期)

2025-06-18T12:34:56.789Z

符合 ISO 8601 格式的时间戳

使用方法:

// 在 pre-request script 中组合参数pm.environment.set("orderId", "ORD_" + Date.now());// 请求 URL 中使用:https://api.com/order/{{orderId}}

2. 随机数据类 🎲

参数

格式示例

典型用途

345(0-1000 内随机数)

测试分页大小(如 size=)

abcdef12345(16 位随机字符串)

生成随机用户名

5f7d3a9c-1b2e-4c3d-8e9f-0a1b2c3d4e5f

唯一标识符(测试分布式 ID)

3. 模拟数据类 🧪

参数

格式示例

典型用途

user567@example.com

注册测试(随机邮箱)

+1 (555) 123-4567

测试短信验证码接口

4111 1111 1111 1111

支付模拟(需配合 Mock Server)

自定义动态参数// 手动获得时间戳var times = Date.now();// 设置为全局变量pm.globals.set("times", times);

使用时调用:

{{times}}

📊 Postman 断言常规六种断言1. Status code:Code is 200(状态码断言)✅作用: 验证接口返回的 HTTP 状态码是否符合预期(如 200、404 等)。示例代码:

pm.test("状态码应为 200", function() { pm.response.to.have.status(200);});

扩展场景:

验证客户端错误(4xx):pm.response.to.have.status(401)(未授权);

验证服务器错误(5xx):pm.response.to.have.status(500)(内部错误)。

2. Responsebody:Contains string(响应体包含字符串断言)🔍作用: 检查响应内容是否包含指定字符串(支持文本、JSON、XML 等格式)。示例代码:

pm.test("响应体包含 success", function() { pm.expect(pm.response.text()).to.include("success");});

注意事项:

若响应为 JSON,需先通过 pm.response.json() 解析;

区分大小写(如 “Success” 与 “success” 不同),可通过 to.include("success", {ignoreCase: true}) 忽略大小写。

3. Responsebody:Json value check(JSON 值断言)🧾作用: 验证响应 JSON 中特定字段的值是否符合预期。示例代码:

pm.test("用户 ID 应为 123", function() { const responseJson = pm.response.json(); pm.expect(responseJson.user.id).to.eql(123); // 严格等于});

多层嵌套场景:

// 响应结构:{ "data": { "list": [{"id": "ORD001"}] } }pm.test("第一个订单 ID 正确", function() { const id = pm.response.json().data.list[0].id; pm.expect(id).to.eql("ORD001");});

4. Responsebody:is equal to a string(响应体等于字符串断言)📏作用: 验证响应内容与指定字符串完全一致(较少使用,因响应常含动态数据)。示例代码:

pm.test("响应体等于指定字符串", function() { pm.expect(pm.response.text()).to.eql('{"status": "ok"}');});

优化建议:

避免直接断言完整响应体,可拆分字段断言;

对动态字段(如时间戳)使用通配符或正则表达式(需结合 Chai 库)。

5. Response headers:Content-Type…(响应头断言)📋作用: 检查响应头是否包含指定字段(如 Content-Type、Authorization)。示例代码:

// 断言存在 Content-Type 头pm.test("响应头包含 Content-Type", function() { pm.response.to.have.header("Content-Type");});// 断言 Content-Type 为 JSON 格式pm.test("Content-Type 应为 application/json", function() { pm.response.to.have.header("Content-Type", "application/json");});

6. Response time is less than 200ms(响应时间断言)⏱️作用: 验证接口响应时间是否小于指定毫秒数(用于性能初步测试)。示例代码:

pm.test("响应时间应小于 200ms", function() { pm.expect(pm.response.responseTime).to.be.below(200);});

扩展用法:

断言响应时间在区间内:pm.expect(responseTime).to.be.within(100, 300);

结合环境变量动态设置阈值:pm.expect(responseTime).to.be.below(pm.environment.get("maxResponseTime"))。

🔧 在断言中获取自定义动态参数的方式

获取方式

语法示例

适用场景

注意事项

pm.globals.get(“参数名”)

pm.globals.get(“times”)

推荐通用写法,兼容性强

需通过 pm 上下文调用,适用于 Pre-request Script、Tests 脚本

globals[“参数名”]

globals[“times”]

键名动态拼接场景

旧版本 Postman 可能不支持

globals.参数名

globals.times

键名无特殊字符时简写

参数名含特殊字符需用方括号访问

🌍 全局断言实现全局断言的三种方案方案 1:在 Collection 中编写公共测试脚本原理: 在 Collection 的 Tests 标签页中编写断言,对集合内所有接口生效。示例代码:

pm.test("全局状态码校验", function() { pm.response.to.be.success; // 断言状态码为2xx});pm.test("全局响应头校验", function() { pm.response.to.have.header("Content-Type"); pm.expect(pm.response.headers.get("Content-Type")).to.include("json");});

注意事项:

集合级断言优先级低于单个接口断言;

可用 pm.info.requestName 判断接口名,实现条件断言:

if (pm.info.requestName !== "健康检查接口") { pm.response.to.have.status(200); // 排除特定接口}

方案 2:使用前置脚本(Pre-request Script)动态注入断言示例代码:

// 在 Collection 或 Folder 的 Pre-request Script 中添加function addGlobalAssertion() { // 动态生成断言代码字符串 const script = ` pm.test("全局响应时间校验", function() { pm.expect(pm.response.responseTime).to.be.below(${pm.environment.get("maxResponseTime") || 1000}); }); `; // 将断言代码注入到当前请求的 Tests 中 pm.test(script);}// 条件执行(如仅在非本地环境执行)if (pm.environment.get("envType") !== "local") { addGlobalAssertion();}

方案 3:通过 Newman 命令行添加全局断言原理: Newman 运行时通过脚本参数注入全局断言。示例代码:

// newman-run.js 脚本内容const { Collection } = require('postman-collection');module.exports = { beforeRun: (collection) => { collection.items.forEach(item => { if (item.request) { item.test = new Collection.ItemTest({ script: { exec: [ "pm.test(\"全局状态码校验\", function() {", " pm.response.to.be.success;", "});", "pm.test(\"全局响应头校验\", function() {", " pm.response.to.have.header(\"X-Request-ID\");", "});" ].join('\n') } }); } }); }};

执行命令:

newman run collection.json --script newman-run.js

全局断言与局部断言的优先级控制

断言位置

优先级

应用场景

单个接口的 Tests

最高

针对特定接口的特殊验证

Folder 级 Tests

中

分组接口的公共验证

Collection 级 Tests

最低

全量接口的基础验证(状态码、响应头)

冲突解决方案:接口级 Tests 中使用 pm.test.remove() 移除不需要的全局断言:

// 移除集合中的全局响应时间断言pm.test.remove("全局响应时间校验");

🧪 Postman 批量运行测试用例在 Postman 中批量运行测试用例,主要通过 Collection Runner 功能来实现,以下是具体步骤:

1. 创建集合和组织用例

点击左侧 “Collections” 的 “➕” 按钮创建集合,输入集合名称。

选中集合点击 “⋯” → Add Folder 添加模块文件夹。

再选中文件夹点击 Add Request 添加接口测试用例,配置请求参数、断言脚本,将接口组织到集合中。

2. 选择运行方式

✅ 点击集合右上角 Run:全模块回归测试。

✅ 点击文件夹右上角 Run folder:单模块迭代测试。

3. 配置 Runner 参数

Iterations:设置测试迭代次数。

Delay:设置接口调用间隔(单位:ms)。

Data:导入 CSV / JSON 文件进行参数化。

Advanced settings:

✅ 勾选 “Persist responses” 保存响应。

🔁 选择 “Run order” 控制执行顺序(按文件夹顺序或随机执行)。

4. 执行批量测试点击 Run 或 Run 文件夹名称 按钮,即可批量运行测试用例。

5. 分析运行结果

📊 汇总信息:运行时间、迭代次数、通过/失败数量、平均响应时间等。

🔍 单接口详情:状态码、响应时间、响应体、断言结果、错误信息。

📂 Postman 数据驱动测试✅ CSV 参数化测试📁 CSV 文件格式要求

第一行为表头,后续行为数据。

使用英文逗号 , 分隔,若字段含逗号,需用双引号包裹。

示例文件 users.csv:

username,password,expected_statusadmin,admin123,200guest,guest456,200invalid_user,wrong_pwd,401

📥 导入 CSV 步骤

Runner 中选择集合或文件夹 → 点击 Select File。

选择 CSV 文件 → Postman 自动识别变量名并预览数据。

🔗 请求中引用变量

URL 参数:

https://api.com/login?username={{username}}

请求体参数:

{ "username": "{{username}}", "password": "{{password}}"}

在断言中使用:

pm.test("状态码校验", function() { pm.response.to.have.status(pm.iterationData.get("expected_status"));});

✅ JSON 参数化测试📁 JSON 文件格式要求

根节点为数组,每组对象为一组测试数据。

示例 orders.json:

[ { "productId": "P001", "quantity": 1, "price": 99.9, "expectedTotal": 99.9 }, { "productId": "P002", "quantity": 3, "price": 49.9, "expectedTotal": 149.7 }]

📥 导入 JSON 步骤

同样在 Runner 中选择 JSON 文件,Postman 自动识别变量。

🔗 引用方式示例

URL 参数:

https://api.com/order/{{productId}}

请求体参数:

{ "quantity": {{quantity}}, "unitPrice": {{price}}}

JSON 断言:

pm.test("金额计算正确", function() { const response = pm.response.json(); pm.expect(response.total).to.eql(pm.iterationData.get("expectedTotal"));});

🧾 请求必须携带的请求头说明

请求头名

说明

示例值

Host

指定目标主机(HTTP/1.1要求)

api.example.com

Connection

是否保持长连接

keep-alive

Accept

可接受的响应格式

application/json

X-Requested-With

是否为 AJAX 请求

XMLHttpRequest

User-Agent

客户端身份标识

Mozilla/5.0...

Referer

请求来源页面 URL

https://example.com

Cookie

携带的 Cookie 信息

session_id=123456; user_token=abc

Content-Type

请求体的格式类型

application/json

🔧 Postman接口Mock Servier服务器🧪 Mock Server 核心价值与应用场景核心价值解决痛点:后端接口尚未开发完成时,前端可通过 Mock Server 模拟接口响应,实现并行开发,提升开发效率。

应用场景

前后端分离开发,后端进度滞后时前端可独立调试

测试复杂业务流程(如支付回调、状态变更)

模拟异常情况(如网络超时、服务器错误)

⚙️ 创建 Mock Server 全流程(以用户示例为例)1. 准备 Mock 响应数据示例 JSON(注意逗号格式):

{ "error_code": 0, "msg": "返回成功", "data": []}

2. 在 Postman 中创建 Mock Server步骤如下:

创建 Collection:

点击左侧 Collections → ➕ → 命名为“前端 Mock 接口”

添加请求(如 GET/POST)→ 命名为“获取数据接口”

配置请求与响应:

请求 URL 可自定义,如:https://mock-api.com/data/query

切换至 Response 标签页 → 选择 raw → 粘贴 JSON

设置状态码为 200 OK

生成 Mock Server:

点击 Collection 的 … → 选择 Generate Mock Server

设置域名(如:mock-server.postman.com)

点击 Create Mock → 复制生成的 Mock URL,如:https://postman-echo.com/mock/12345/data/query

3. 前端调用 Mock 接口示例(JavaScript)fetch("https://postman-echo.com/mock/12345/data/query", { method: "GET", headers: { "Content-Type": "application/json" }}).then(response => response.json()).then(data => { console.log("接口返回:", data); // 渲染或处理数据}).catch(error => { console.error("请求错误:", error);});

🍪 Postman 的 Cookie 鉴权机制1. Cookie 是什么

由服务器生成的小段 key=value 格式文本

存储在浏览器或 Postman 中,用于身份验证、会话控制等

2. 鉴权流程

当客户端第一次访问服务器的时候,那么服务器就会生成Cookie信息,并且在响应头的set-cookie里面把生成的cookie信息发送给客户端。

当客户端第2-N次访问服务器的时候,那么客户端就会在请求头的cookie带上cookie信息,从而实现鉴权

首次请求 → 服务器生成 Set-Cookie 响应头 → 客户端保存 Cookie↓后续请求 → 客户端自动附带 Cookie 请求头 → 服务器完成身份校验

3. Cookie 类型对比

类型

存储位置

生命周期

安全性

应用场景

会话 Cookie

内存

浏览器关闭即失效

较低

购物车、临时登录

持久 Cookie

硬盘

设定的过期时间前有效

较高

记住我、长期登录

🔐 Postman 实现接口加密与解密主流加密算法分类

类型

代表算法

特点

应用场景

对称加密

AES / DES / Base64

加解密使用同一密钥,速度快

请求体数据加密

非对称加密

RSA / ECC

公钥加密私钥解密,较安全

数字签名、密钥交换

单向哈希

MD5 / SHA256

不可逆,用于验证完整性

密码存储、数据签名

Postman 中加密实现方式✅ 使用内置 CryptoJS(推荐)Postman 内置了 Crypto-js 库,支持 AES、MD5、SHA 等多种加密算法。

AES 加密请求体:

// 在Pre-request Script中添加const CryptoJS = require('crypto-js');// 待加密数据const data = JSON.stringify({ "username": "test", "password": "123456"});// 密钥(需与后端保持一致)const secretKey = "1234567890123456"; // 16字节密钥(AES-128)// AES加密(ECB模式 + PKCS7填充)const encrypted = CryptoJS.AES.encrypt(data, secretKey, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7}).toString();// 设置加密后的数据到请求体pm.request.body.raw = encrypted;

MD5 签名:

// 在Pre-request Script中添加const CryptoJS = require('crypto-js');// 待签名数据const signData = "param1=value1¶m2=value2";const secretKey = "your-api-secret";// 生成MD5签名const signature = CryptoJS.MD5(signData + secretKey).toString();// 添加签名到请求头pm.request.headers.upsert({ key: "X-Signature", value: signature});

🔄 外部 JS 文件导入encrypt.js 文件:

function aesEncrypt(data, key) { const CryptoJS = require('crypto-js'); return CryptoJS.AES.encrypt(data, key).toString();}

使用方式:

eval(pm.globals.get("encryptScript")); // 从全局变量获取脚本内容const encrypted = aesEncrypt("敏感数据", "密钥");

🔍 解密响应数据(Tests 脚本中)在 Tests 脚本中解密响应// 在Tests脚本中添加const CryptoJS = require('crypto-js');// 从响应获取加密数据const encryptedData = pm.response.text();const secretKey = "1234567890123456";// AES解密const bytes = CryptoJS.AES.decrypt(encryptedData, secretKey);const decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));// 断言解密后的数据pm.expect(decryptedData.code).to.eql(0);pm.expect(decryptedData.data.username).to.eql("test");

使用环境变量存储解密结果// 解密后存储到环境变量供后续请求使用pm.environment.set("decryptedData", decryptedData);

🔐 加密场景示例RSA 加密(使用公钥):

// 在Pre-request Script中添加(需先导入jsrsasign库)const JSEncrypt = require('jsencrypt');// 公钥(从环境变量获取)const publicKey = pm.environment.get("rsaPublicKey");// 待加密数据const data = "敏感信息";// 加密const encrypt = new JSEncrypt();encrypt.setPublicKey(publicKey);const encrypted = encrypt.encrypt(data);// 设置到请求体pm.request.body.raw = encrypted;

带时间戳的签名验证:

// Pre-request Scriptconst CryptoJS = require('crypto-js');const timestamp = new Date().getTime();// 生成签名const signData = `timestamp=${timestamp}&api_key=your_key`;const signature = CryptoJS.SHA256(signData + pm.environment.get("apiSecret")).toString();// 添加到请求头pm.request.headers.upsert({ key: "X-Timestamp", value: timestamp });pm.request.headers.upsert({ key: "X-Signature", value: signature });// Tests脚本验证响应签名pm.test("响应签名验证", function() { const responseSign = pm.response.headers.get("X-Response-Sign"); const expectedSign = CryptoJS.SHA256(pm.response.text() + pm.environment.get("apiSecret")).toString(); pm.expect(responseSign).to.eql(expectedSign);});

好的,以下是针对你提供的 Newman 相关内容的整理,带有适当表情提示,保持简洁且易读:

🚀 Newman🚀 Newman 核心价值与应用场景定位:Postman 的命令行运行器,适合自动化执行测试脚本,完美适配 CI/CD 流水线。

核心优势:

🖥️ 脱离 GUI,可集成 Jenkins、GitLab CI 等自动化工具

🔄 支持批量运行、参数化测试、生成标准化报告

🌍 跨平台(Linux/Windows/Mac),支持团队协作

🛠 Newman 安装与基础使用安装npm install -g newman

(需先安装 Node.js)

基础命令结构newman run [collection文件路径] [选项参数]

核心参数说明

参数

作用

示例

-e

指定环境变量文件 (JSON)

-e environments/test.json

-g

指定全局变量文件 (JSON)

-g globals/prod.json

-d

参数化测试数据文件 (CSV/JSON)

-d data/users.csv

-n

迭代次数

-n 5 (每个用例执行 5 次)

-r

报告格式(支持多种组合)

-r cli,html,json,junit

--reporter-*

定制报告输出(如HTML路径)

--reporter-html-export reports/result.html

--delay-request

请求间隔(毫秒)

--delay-request 500

--insecure

允许忽略 HTTPS 证书验证

--insecure

🏃‍♂️ 从 Postman 到 Newman 的完整流程1. 导出 Collection 和 Environment

Postman → 选择集合 → 点击 ... → Export → 保存为 collection.json

选择环境 → 点击 ... → Export → 保存为 environment.json

2. 执行基本测试# 运行集合,使用测试环境变量newman run collection.json -e environment.json

3. 参数化测试示例# 使用CSV数据文件进行参数化测试,生成HTML报告newman run collection.json -e test.env.json -d data/users.csv -n 3 -r html --reporter-html-export reports/test-result.html

4. 并发与全局变量示例# 模拟10个并发用户,执行5次迭代,输出JUnit格式报告newman run collection.json -g globals.json -n 5 --concurrency 10 -r junit --reporter-junit-export reports/junit.xml

🤖 Postman + Newman + Jenkins 持续集成实战核心步骤速览

环境准备

安装 Jenkins(推荐 Docker 部署)

安装 Node.js 和 Newman(Jenkins 节点)

导出 Postman Collection 和环境变量文件

Jenkins 配置

新建自由风格项目

配置 Git 源码管理

添加构建步骤,执行 Newman 命令

报告集成

安装 HTML Publisher 插件

配置报告路径

保存并触发构建

🖥 详细操作步骤环境准备# Docker安装 Jenkins(推荐)docker run -d -p 8080:8080 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

# Jenkins节点安装 Newmannpm install -g newman newman-reporter-html

导出 Postman Collection(collection.json)与环境变量文件(environment.json)

Jenkins 项目配置

新建项目

点击 New Item → 输入项目名 → 选择 Freestyle project

源码管理

选择 Git → 输入仓库地址 → 配置认证信息

构建步骤

添加 Execute shell(Linux/macOS):

newman run collection.json \ -e environment.json \ -r html \ --reporter-html-export reports/index.html

构建后操作

添加 Publish HTML reports 插件配置

Report name: API测试报告

Directory: reports

Index page: index.html

🔍 关键命令解析newman run collection.json \ -e environment.json \ # 环境变量 -d data.csv \ # 参数化测试数据(可选) -n 5 \ # 迭代次数(可选) -r html \ # 生成HTML报告 --reporter-html-export reports/index.html # 报告路径

⚠️ 常见问题及解决方案

问题

解决方案

Newman 未找到

检查 Node.js 与 Newman 是否安装,或使用绝对路径(如 /usr/bin/newman)

报告为空

确认命令中的报告路径与 Jenkins 配置一致,确认 Newman 执行成功

中文乱码

添加参数 --reporter-html-encoding utf-8

环境变量不生效

确保 environment.json 格式正确,变量名与 Postman 一致

✅ 执行效果验证

触发 Jenkins 构建

构建成功后,点击左侧菜单中的 “API测试报告”

查看测试结果(成功率、响应时间、失败用例)

写在最后通过本次系统性学习,我对接口测试从原理、流程、工具到自动化的整个链路有了清晰的认识,Postman 不仅适合手动调试,还可以搭配 Newman 实现完整的自动化方案,未来在项目中我也会持续将这些方法应用于实践中。

如果你刚入门接口测试,希望这份整理对你有所帮助,也欢迎交流、讨论更多实战经验 🙌。

相关推荐