Postman使用学习

2021-10-26  本文已影响0人  海的那一边

使用变量

通过将值存储在变量中,可以在整个集合、环境和请求中引用它,如果需要更新该值,只需在一个地方更改它。
Postman 支持以下变量范围:
Global
Collection
Environment
Data
Local


image.png

如果在两个不同的作用域中声明了同名变量,则使用作用域最窄的变量中存储的值——例如,如果有一个Globa变量和一个Local变量都命名为username,则在请求时将使用Local变量运行。

在脚本中定义变量:

pm.globals.set("variable_key", "variable_value");
pm.collectionVariables.set("variable_key", "variable_value");
pm.environment.set("variable_key", "variable_value");
pm.variables.set("variable_key", "variable_value");

在脚本中使用变量:

//access a variable at any scope including local
pm.variables.get("variable_key");
//access a global variable
pm.globals.get("variable_key");
//access a collection variable
pm.collectionVariables.get("variable_key");
//access an environment variable
pm.environment.get("variable_key");

访问变量:
{{username}}
如果变量未解析,Postman 会将其突出显示为红色。

使用动态变量
动态变量的例子如下:

{{$guid}} :一个 v4 风格的guid
{{$timestamp}}: 当前时间戳(以秒为单位的 Unix 时间戳)
{{$randomInt}}: 0 到 1000 之间的随机整数
const stringWithVars = pm.variables.replaceIn("Hi, my name is {{$randomInt}}");

共享和持久化数据
创建或编辑变量时,您可以输入初始值和当前值。在 UI 中创建新变量时,如果将当前值留空,它将自动填充初始值。如果您指定一个当前值,它将仅对您的实例是本地的——Persist选项允许您将当前值推送到共享数据,更新初始值以匹配当前值。

编写脚本

您可以添加 JavaScript 代码以在流中的 2 个事件期间执行:

  1. 在将请求发送到服务器之前,作为预请求脚本选项卡下的预请求脚本。
  2. 收到响应后,作为测试选项卡下的测试脚本。

脚本执行顺序:
在 Postman 中,单个请求的脚本执行顺序如下所示:

单个请求的工作流程

对于集合中的每个请求,脚本将按以下顺序执行:

收集请求的工作流程

编写预请求脚本

您可以在 Postman 中使用预请求脚本在请求运行之前执行 JavaScript。通过在请求、集合或文件夹的Pre-request Script选项卡中包含代码,您可以执行预处理,例如设置变量值、参数、标头和正文数据。您还可以使用预请求脚本来调试代码,例如通过将输出记录到控制台。

请求前脚本的示例用法如下:

脚本工具流:
在此之后运行指定的请求(集合中定义的请求名称,例如“获取客户”):

postman.setNextRequest(requestName:String):Function

在此之后运行指定的请求(由 返回的请求 ID pm.info.requestId):

postman.setNextRequest(requestId:String):Function
//script in another request calls:
//pm.environment.set('next', pm.info.requestId)
postman.setNextRequest(pm.environment.get('next'));

编写测试断言:

您可以为每个请求添加所需的任意数量的测试。
您的测试可以包含多个断言作为单个测试的一部分——您可以使用它来将相关断言组合在一起。

pm.test("The response has all properties", () => {
    //parse the response json and test three properties
    const responseJson = pm.response.json();
    pm.expect(responseJson.type).to.eql('vip');
    pm.expect(responseJson.name).to.be.a('string');
    pm.expect(responseJson.id).to.have.lengthOf(1);
});

您可以将测试脚本添加到集合、文件夹或集合中的单个请求。与集合关联的测试脚本将在集合中的每个请求之后运行。与文件夹关联的测试脚本将在文件夹中的每个请求之后运行。这允许您在每次请求后重用常用的测试。

测试响应体

您可以检查响应正文中的特定值:

pm.test("Person is Jane", () => {
  const responseJson = pm.response.json();
  pm.expect(responseJson.name).to.eql("Jane");
  pm.expect(responseJson.age).to.eql(23);
});

测试状态码

您可以测试响应状态代码:

pm.test("Status code is 201", () => {
  pm.response.to.have.status(201);
});

如果您想测试状态代码是否为一组,您可以将它们全部包含在一个数组中并使用oneOf

pm.test("Successful POST request", () => {
  pm.expect(pm.response.code).to.be.oneOf([201,202]);
});

您还可以检查状态代码文本:

pm.test("Status code name has string", () => {
  pm.response.to.have.status("Created");
});

测试响应时间
您可以测试响应时间是否在指定范围内:

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

使用集合运行器

设置接下来要执行的请求:

postman.setNextRequest("request_name");

循环当前请求:

提供当前运行的名称setNextRequest会导致 Postman 连续运行当前请求。
注意:在连续循环一个请求时,应该包装setNextRequest一些逻辑以确保请求不会无限期地运行,否则收集运行器将需要强制关闭。
您可以使用数据文件传递 Postman 值集以在集合运行中使用。通过在 Collection Runner 中选择 JSON 或 CSV 数据文件,您可以在单次运行中使用多个不同的值测试您的请求。

上一篇下一篇

猜你喜欢

热点阅读