手机版

Hoppscotch如何使用测试脚本验证响应_Hoppscotch Test Script编写教程【实战】

时间:2026-08-27 415
Hoppscotch中需通过Tests面板编写脚本实现API响应自动验证:一、用pm.response验证状态码与响应时间;二、解析JSON校验字段存在性、类型及值;三、检查Content-Type等响应头;四、提取token等数据设为环境变量;五、用tv4按JSON Schema严格校验结构。

如果您在Hoppscotch中发送API请求后需要自动验证响应是否符合预期,则需通过编写测试脚本实现断言逻辑。以下是多种可直接运行的测试脚本编写方法:

一、基础状态码与响应时间验证

该方法用于确认HTTP请求是否成功返回且响应及时,是最基本的可靠性检查。它依赖内置的pm.response对象获取状态信息,并使用pm.expect进行断言。

1、点击目标请求,在右侧标签栏切换至“Tests”面板。

2、输入以下脚本:

pm.test("Status code is 200", function() { pm.response.to.have.status(200); });

3、添加响应时间断言:

pm.test("Response time is less than 500ms", function() { pm.expect(pm.response.responseTime).to.be.below(500); });

二、JSON响应体字段与结构验证

该方法适用于返回JSON格式数据的API,可验证关键字段是否存在、类型是否正确、值是否匹配预期,避免因结构变更导致前端解析失败。

1、确保响应体为合法JSON(Hoppscotch会自动高亮语法错误)。

2、在Tests面板中添加以下脚本:

pm.test("Response has user object", function() { const jsonData = pm.response.json(); pm.expect(jsonData).to.have.property("user"); });

3、进一步校验嵌套字段类型:

pm.test("User ID is number and name is string", function() { const jsonData = pm.response.json(); pm.expect(jsonData.user.id).to.be.a("number"); pm.expect(jsonData.user.name).to.be.a("string"); });

三、响应头与内容类型校验

该方法用于验证服务端是否按约定返回正确的HTTP头信息,尤其适用于需强制要求Content-Type或自定义认证头的场景。

1、在Tests面板中插入以下脚本:

pm.test("Content-Type is application/json", function() { pm.expect(pm.response.headers.get("Content-Type")).to.include("application/json"); });

2、验证自定义响应头(如X-RateLimit-Remaining):

pm.test("Rate limit header exists", function() { pm.expect(pm.response.headers.has("X-RateLimit-Remaining")).to.be.true; });

四、动态提取并设置环境变量

该方法支持从当前响应中提取数据(如token、ID等),并写入环境变量,供后续请求复用,是构建请求链的关键步骤。

1、在Tests面板中添加提取逻辑:

pm.test("Extract and set auth token", function() { const jsonData = pm.response.json(); pm.environment.set("auth_token", jsonData.token); });

2、验证变量是否成功写入:

pm.test("Auth token is not empty", function() { pm.expect(pm.environment.get("auth_token")).to.not.be.undefined; });

五、JSON Schema结构化断言

该方法使用tv4库对整个响应体执行严格模式校验,适用于接口契约明确、需保障前后端数据结构完全一致的生产环境。

1、在Tests面板中粘贴完整Schema定义:

pm.test("Validate response against schema", function() { const schema = { type: "object", properties: { id: { type: "number" }, email: { type: "string", format: "email" } }, required: ["id", "email"] }; const jsonData = pm.response.json(); pm.expect(tv4.validate(jsonData, schema)).to.be.true; });

2、若校验失败,Hoppscotch将在测试结果中显示具体不匹配路径。

女子学校安检员安卓最新版
6.0
模拟经营 20 MB
扫一扫手机安装更便捷