如何使用 Postman 脚本和动态变量进行更快的测试

58 阅读3分钟

如果您使用 Postman 测试 API,您已经节省了时间,但还有一种简单的方法可以使其更加强大。使用一些轻量级脚本,您可以自动执行重复性任务,将请求链接在一起,并将更多精力放在构建上。
在本文中,您将了解如何使用 Postman 的轻量级脚本环境增强 API 测试。
所有这些都包含在请求的“脚本”选项卡中。

Postman 请求中的脚本选项卡

环境变量

就像在代码中一样,您可以在每个 Postman 集合中使用环境变量来保存经常使用或在多个请求中使用的值。
常见用例包括基本 URL、ID 和身份验证令牌/JWT。因此,您可以像上图所示那样使用环境变量,而不是为每个请求使用完整的端点base_url。如果您运行的是微服务架构,并且不同的服务使用不同的基本 URL,那么这种方法尤其有用。如果您经常需要使用多个用户 ID 或身份验证令牌进行测试,这种方法也非常有用。实际上,您的集合可能如下所示:

Postman 中的环境变量选项卡

要创建新环境,请单击图像中以黑色突出显示的下拉菜单,要查看环境中的变量,请单击以红色突出显示的图标。

您可以将环境变量标记为敏感变量,这样变量值就会被屏蔽,让您的队友知道需要小心处理。您还可以实时与队友共享变量值。

现在,我们来讨论一下脚本。

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