如果您使用 Postman 测试 API,您已经节省了时间,但还有一种简单的方法可以使其更加强大。使用一些轻量级脚本,您可以自动执行重复性任务,将请求链接在一起,并将更多精力放在构建上。
在本文中,您将了解如何使用 Postman 的轻量级脚本环境增强 API 测试。
所有这些都包含在请求的“脚本”选项卡中。
环境变量
就像在代码中一样,您可以在每个 Postman 集合中使用环境变量来保存经常使用或在多个请求中使用的值。
常见用例包括基本 URL、ID 和身份验证令牌/JWT。因此,您可以像上图所示那样使用环境变量,而不是为每个请求使用完整的端点base_url。如果您运行的是微服务架构,并且不同的服务使用不同的基本 URL,那么这种方法尤其有用。如果您经常需要使用多个用户 ID 或身份验证令牌进行测试,这种方法也非常有用。实际上,您的集合可能如下所示:
要创建新环境,请单击图像中以黑色突出显示的下拉菜单,要查看环境中的变量,请单击以红色突出显示的图标。
您可以将环境变量标记为敏感变量,这样变量值就会被屏蔽,让您的队友知道需要小心处理。您还可以实时与队友共享变量值。
现在,我们来讨论一下脚本。
Postman 提供了一个轻量级环境,允许您使用 JavaScript 修改、自动化和转换请求和响应。脚本可以是请求前脚本,也可以是响应后脚本。
预请求脚本
预请求脚本是 JavaScript(或类似 TypeScript)的代码片段,会在您的请求发出之前执行。
示例:签名请求(HMAC 或 SHA256)。
某些 API 要求您使用密钥对请求进行签名。手动执行此操作非常繁琐,但使用预请求脚本可以简化此操作:
// Pre-request script for signing request body
const crypto = require('crypto-js');
const body = pm.request.body.raw;
const secret = pm.environment.get("API_SECRET");
const signature = crypto.HmacSHA256(body, secret).toString();
pm.environment.set("signature", signature); // Do this if you have the signed secret key as a separate environment variable
// Add signature header dynamically
pm.request.headers.add({
key: "X-Signature",
value: signature
});
现在,每个传出的请求都经过安全签名,无需任何手动步骤。
响应后脚本
响应后脚本允许您验证响应、存储未来请求的值,甚至自动执行多步骤工作流程。
// Test script
pm.test("Login successful", () => {
pm.response.to.have.status(200);
});
// Sets an environment variable with the token and user's ID from the login response
const response = pm.response.json();
pm.environment.set("USER_1_AUTH_TOKEN", response.token);
pm.environment.set("USER_1_ID", response.id);
现在,令牌和用户 ID 会自动存储在您的环境中,并可在任何将来的请求中使用。
奖金
Postman 提供了自动生成的动态变量,您可以直接将其放入请求正文中,无需编写任何脚本。以下是一些示例:
{{$guid}}→ 生成随机 UUID
{{$timestamp}}→ 当前 UNIX 时间戳
{{$randomInt}}→ 随机整数
{{$randomEmail}}→ 随机电子邮件地址
{{$randomPassword}}→ 随机电子邮件地址
{{$randomUsername}}→ 随机电子邮件地址
{{$isoTimestamp}}→ ISO 时间戳
{
"username": "{{$randomUsername}}",
"timestamp": "{{$isoTimestamp}}",
"email": "{{$randomEmail}}",
"randomPassword": "{{$randomPassword}}"
}
当您需要模拟数据来测试端点时,这些选项尤其有用,而且有很多选项可供选择。您可以在这里找到它们,或者直接输入{{$请求体值来查看选项。Postman
提供了各种各样的工具来简化 API 测试,我希望我已经帮助您了解了一些,并鼓励您进一步探索,以简化您的测试工作流程。作者www.mjsyxx.com