当前位置: 首页 > article >正文

【测试工具】 Postman 基本使用

Postman 基本使用

  • 一、基本使用
    • 1. 主要概念
    • 2. 发送请求(Requests)
      • 2.1 请求参数
      • 2.2 请求脚本
    • 3. 集合管理(Collections)
    • 4. 环境管理(Environments)
  • 二、高阶使用
    • 1. APIs
    • 2. Mock Servers
    • 3. Flows

作为一个常用的接口测试工具,postman具有交互性强,操作简单,具有协作能力、环境切换能力等优点。
本文用于记录目前我使用postman的些许心得。
在这里插入图片描述

这里先抛一个postman官方使用手册:
https://learning.postman.com/docs/getting-started/introduction/

一、基本使用

1. 主要概念

在这里插入图片描述

从上面这两张截图可以看到,postman有Collections、APIs、Environments、Mock Servers、Monitors、Flows、History等概念。

Collections就是集合,可以用来归纳一系列接口,接口请求的测试也就是我们平时最经常使用的功能。

2. 发送请求(Requests)

在这里插入图片描述
我们可以点击上图绿色箭头指向的New按钮,选择Http Request新建一个请求,或者点击绿色箭头处的加号,出现如下图这样的一个初始化界面。
在这里插入图片描述

2.1 请求参数

我们可以根据实际的接口请求修改 Request,比如请求方法,URL,请求参数,认证相关的请求头(Authorization),普通请求头(Headers),请求体等一系列HTTP常规参数。

2.2 请求脚本

Postman Sandbox 是一个 JavaScript 执行环境。
Postman 脚本分为以下两种:
预请求脚本(Pre-request Script)
测试脚本(Tests)
脚本使用场景
自动化校验请求的结果是否符合预期;
当接口数量较多并且一个请求的参数是另一个请求的结果(即存在依赖关系)时,脚本就可以我们一键获取参数,这个场景还需要配合 Environments 的环境变量实现。

脚本执行顺序
在这里插入图片描述

脚本使用举例

预请求脚本

实际场景描述:目前 trello 虚拟项目由于集成了 oauth2 集成认证中心,所有看板相关的业务接口都需要先获取一个 token;在测试业务接口时总是需要先手动请求 /api/auth/login获取 code 参数值,在复制 code 请求 /api/oauth2/token 接口获取 access_token。

脚本实现

// var base_url = "http://10.205.18.51:8093/api";
var base_url = "http://" + pm.environment.get("ip") + ":8093/api";

// pm 就是内置的postman api对象,pm.sendRequest 方式是 http请求api,
// 可以类比前端的ajax等servlet工具,语法也基本和前端一直,除了请求体内的参数,需要根据 mode 属性确定请求体类型,并嵌套真实参数。
pm.sendRequest({
   url: base_url + "/auth/login",
   method: 'POST',
   header: {
       "Content-Type": "application/json"
   },
   body: {
       mode: 'raw',
       raw: JSON.stringify(
           {
               userName: "username",
               password: "password",
               clientId: "trello-auth"
           }
       )
   }
}, function (err, res) {
   let data = res.json();
   let code = data.data.code;
   // 将请求获取到的 code 更新到环境变量中
   pm.globals.set("code", code);
   // 这个请求就是 表单类型的 post请求
   pm.sendRequest({
       url:  base_url + "/oauth2/token",
       method: 'POST',
       header: {
           "Content-Type": "application/x-www-form-urlencoded",
           "Authorization": "Basic dHJlbGxvLWF1dGg6dHJlbGxvLWF1dGg="
       },
       dataType: "json",
       body: {
           mode: 'urlencoded',
           urlencoded: "grant_type=authorization_code&code=" + code + "&clientId=trello-auth"
       }
   }, function (err2, res2) {
       let data2 = res2.json();
       pm.globals.set("access_token", data2.access_token);
       pm.globals.set("refresh_token", data2.refresh_token);
   })
});

以上脚本位于请求的 Pre-request Script 脚本框中,具体如下图:
在这里插入图片描述
在这里插入图片描述

通过这样设置后,每次请求前会先执行预请求脚本,自动获取 code 和 access_token等参数,并保存到环境变量中。
然后在当前请求需要用到 token 参数的地方使用 {{ }} 获取环境变量,具体如上图。

测试脚本

在这里插入图片描述

更多测试脚本示例:
https://learning.postman.com/docs/writing-scripts/script-references/test-examples/

3. 集合管理(Collections)

在这里插入图片描述

集合可以理解为对一系列请求的分类,这个分类就比较灵活,一般可以根据所属服务分类,比如认证服务和看板服务,也可以根据功能分类,比如登录注册功能、看板crud等等,从归纳这个角度集合其实就是文件夹;

对于这样一个文件夹,postman 有提供了一系列操作,可以对同一集合下的接口列表做统一处理,这样就起到一个接口统一管理的作用。具体的集合操作有:分享、新建文件夹、批量导入导出、批量运行/测试、批量Mock等等。
在这里插入图片描述
说到接口管理,在高阶使用中还会进一步介绍 APIs的概念,APIs 模块实际上更贴近于对“接口管理”这样一个功能的定义,具体包括了关联集合,接口文档生成,接口版本定义,接口规范定义,接口状态管理等等功能。

集合运行测试

在这里插入图片描述

4. 环境管理(Environments)

在这里插入图片描述

环境管理这个模块其实很好理解,对应于实际项目中,我们也会有多个环境用于不同的作用,比如我们的 trello 项目就有 本地、Dev、UAT 三类环境,开发测试的不同阶段我们会用不同的环境来测试我们的接口表现是否符合预期。

二、高阶使用

1. APIs

在这里插入图片描述

https://learning.postman.com/docs/designing-and-developing-your-api/the-api-workflow/

2. Mock Servers

在这里插入图片描述
https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/mock-with-api/

3. Flows

在这里插入图片描述
https://learning.postman.com/docs/postman-flows/flows-intro/building-your-first-flow/


http://www.kler.cn/a/467711.html

相关文章:

  • Visual studio code编写简单记事本exe笔记
  • ArkTs 状态管理装饰器
  • 深入理解 JavaScript 立即执行函数表达式(IIFE)
  • Java 关键字【synchronized】
  • C#设计模式(行为型模式):状态模式
  • uniapp中判断设备类型
  • 【Linux】调度优先级(谦让度)
  • spring、spring boot、Springmvc 的区别和关系
  • k8s集群部署 - Dashboard v2.7
  • MySQL 8 主从同步配置(Master-Slave Replication)
  • ESP32移植Openharmony外设篇(7)土壤湿度传感器YL-69
  • Python进阶-08-继承性
  • 编译 C++ 程序:分离与保留调试信息以支持 GDB 对 Core 文件的调试
  • 如何自行解锁 ATamp;T 手机
  • UE5 slate创建SDockTab标签页的过程理解
  • Megatron - LM 怎么进行模型切分的,怎么匹配服务器的
  • 量子力学复习
  • STM32学习之MPU6050芯片 及 软件I2C读写MPU6050实验
  • linux命令行连接Postgresql常用命令
  • 【高阶数据结构】哈希表封装unordered_map、unordered_set
  • 【论文阅读】Anchor-based fast spectral ensemble clustering
  • 微服务保护—Sentinel快速入门+微服务整合 示例: 黑马商城
  • 我用AI学Android Jetpack Compose之Jetpack Compose学习路径篇
  • 字符串中常用函数
  • 时序优化方法
  • docker、数据库、Web应用程序安全