Postman基本使用、测试环境(Environment)配置

文章目录

  • 准备测试项目Demo
    • Controller测试代码
    • Interceptor模拟拦截配置
  • Postman模块简单介绍
  • Postman通用环境配置
    • 新建环境(Environment)
    • 配置环境(Environment)
      • 设置域名变量
      • 引用域名变量
      • 查看请求结果打印
  • Postman脚本设置变量
    • 登录成功后设置全局`Auth-Token`脚本
    • 编写脚本
    • 查看consol打印结果
    • 查看环境变量设置结果
  • 请求需要授权的Api测试
    • 引用授权标识`Auth-Token`
    • 模拟`Auth-Token`失效,重新请求
  • 总结
  • 参考文章

准备测试项目Demo

Controller测试代码

package com.dz.controller;import com.jfinal.core.Controller;
import com.jfinal.core.Path;import java.util.HashMap;
import java.util.Map;@Path("/")
public class HelloWorldController extends Controller {/*** postman 环境配置请求测试*/public void test_login() {Map<String, Object> resMap = new HashMap<>();resMap.put("code", 1);// 响应一个登录成功的Auth-TokenMap<String, Object> tokenMap = new HashMap<>();tokenMap.put("Auth-Token", "1234567890.hello.token");resMap.put("data", tokenMap);resMap.put("message", "success");renderJson(resMap);}/*** postman 环境配置请求测试*/public void test_api() {Map<String, Object> resMap = new HashMap<>();resMap.put("code", 1);resMap.put("data", "响应一个正确数据");resMap.put("message", "success");renderJson(resMap);}
}

Interceptor模拟拦截配置

package com.dz;import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;import java.util.HashMap;
import java.util.Map;/*** demo* <pre>*     配置一个简单的请求拦截* </pre>*/
public class ReqInterceptor implements Interceptor {@Overridepublic void intercept(Invocation inv) {String actionKey = inv.getActionKey();if (actionKey.contains("/test_login")) {// 直接放过登录请求:不校验Auth-Tokeninv.invoke();} else {Controller controller = inv.getController();String authToken = controller.getHeader("Auth-Token");// 拦截授权标识if (authToken == null || authToken.isEmpty()) {Map<String, Object> resMap = new HashMap<>();resMap.put("code", 10000);resMap.put("data", "Not Fount Auth-Token.");resMap.put("message", "error");controller.renderJson(resMap);} else {// 假设这是一个正确的Auth-Tokenif ("1234567890.hello.token".equals(authToken)) {// 通过inv.invoke();} else {Map<String, Object> resMap = new HashMap<>();resMap.put("code", 10001);resMap.put("data", "Auth-Token is not error.");resMap.put("message", "error");controller.renderJson(resMap);}}}}
}

Postman模块简单介绍

        一般在使用的时候,会把整个完整的请求url写到地址栏,包括协议、域名、端口号、项目地址。
        在单一环境进行请求的时候,这样写不会出现大范围重新编辑的情况,通常复制链接就能把协议、域名、端口等全部复制到新url。只需要重新修改项目地址即可!

        也可能会出现问题:

        一旦出现直接同时测试线上(某个域名下的Api)或者测试本地(localhost)下的Api,就可能出现反复修改域名的情况,这样就是让原本简单的请求变的复杂,修改的请求少了还好,改的多了之后会很让人头大。

        如果你说这个也不复杂呀?那么如果请求多个IP下的相同Api呢,比如:

        http://192.169.1.10:9090/test_api
        http://192.169.1.11:9090/test_api
        http://192.169.1.12:9090/test_api
        http://192.169.1.13:9090/test_api
        http://192.169.1.14:9090/test_api
        ...

        这样也不复杂吗?除了IP不同,其他的都是一样的,这时候Postman请求环境的配置就至关重要了。

image.png

注!Postman版本不同,界面样式也可能不一样,但是配置基本一致。

Postman通用环境配置

新建环境(Environment)

image.png

配置环境(Environment)

设置域名变量

image.png

引用域名变量

image.png
点击【Send】发送请求,获取响应数据:
image.png

查看请求结果打印

image.png

Postman脚本设置变量

        上面使用/test_login演示了请求环境配置域名,程序也正确响应了Auth-Token的值。
        但是,如果需要Auth-Token授权的Api请求怎么办呢?要手动把Auth-Token值都复制一遍吗?
        如果你说是的,反正都要创建一个新请求,复制一遍也不麻烦!那如果这个Auth-Token过期了呢?还需要重新把之前测试的接口都替换一遍吗?

        这个时候就有一个非常好用的方法:
        使用脚本去设置一个全局的/当前环境的Auth-Token每次登录都重新设置Auth-Token,这样只需要引用Token的变量就可以了,不需要每次替换。只要重新登录就好

登录成功后设置全局Auth-Token脚本

image.png

编写脚本

脚本使用Javascript编写:
image.png
脚本内容:

// 打印两个结果
console.log('响应response:', pm.response)
console.log('响应体responseBody:', responseBody)// 处理一下逻辑判断
let response = pm.response
// 请求成功的判断
if (response.status === 'OK' && response.code === 200) {let data = JSON.parse(responseBody)if (data && data.code === 1) {pm.environment.set('Auth-Token', data.data['Auth-Token'])console.log('Auth-Token设置成功!')} else {console.log('登录验证失败!')}
} else {console.log('请求返回错误!')
}

查看consol打印结果

        正常请求了登录接口,同时按照编写的逻辑,处理了环境变量的设置

image.png

查看环境变量设置结果

image.png

请求需要授权的Api测试

引用授权标识Auth-Token

        什么内容都没有变化,仅仅只是修改了接口名字/test_api,引用了Auth-Token:请求成功了,返回状态码200。

image.png

模拟Auth-Token失效,重新请求

        手动在环境配置中修改Auth-Token的值,模拟Token失效:

image.png
        重新请求/test_api:按照代码内编写的Token拦截机制,发现Token不正确,做出了响应。

image.png
        这时候什么都不需要修改,重新登录/test_login:Auth-Token就重新设置了

image.png
        重新对/test_api发起请求就得到正确的返回结果了:同样是这个请求接口什么都没变,只是重新登录了而已。

image.png

总结

  1. 环境配置中设置的变量,只需要在请求的时候,使用双大括号{{var}}引用即可(哪里使用,哪里引用)。
  2. 同样的Api,不同的配置,只需要切换请求环境就能实现请求的无缝切换,无需重新编辑参数。

参考文章

Postman接口测试—设置postman测试环境(Environment),配置token全局变量,接口测试报错处理_postman的environment-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/416457.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2种数控棋

目录 数控棋1 数控棋2 数控棋1 棋盘&#xff1a; 初始局面&#xff1a; 规则&#xff1a; 规则&#xff1a;双方轮流走棋&#xff0c;可走横格、竖格、可横竖转弯&#xff0c;不可走斜格。每一步均须按棋所在格的数字走步数&#xff0c;不可多不可少。 先无法走棋的一方为…

分布式ID(2):雪花算法生成ID

1 雪花算法简介 这种方案大致来说是一种以划分命名空间(UUID也算,由于比较常见,所以单独分析)来生成ID的一种算法,这种方案把64-bit分别划分成多段,分开来标示机器、时间等,比如在snowflake中的64-bit分别表示如下图(图片来自网络)所示: 41-bit的时间可以表示(1L&l…

Android Studio安卓开发--ListView学习整理

ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内&#xff0c;同时屏幕上原有的数据则会滚动出屏幕。 1.ListView的简单用法 &#xff08;1&#xff09;activity_main.xml布局中加入ListView控件&#xff1a;&#xff08;先占满整个布局的空间&#xff09;…

Linux搭建dns主从服务器

一、实验要求 配置Dns主从服务器&#xff0c;能够实现正常的正反向解析 二、知识点 1、DNS简介 DNS&#xff08;Domain Name System&#xff09;是互联网上的一项服务&#xff0c;它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网。…

CHS_01.2.2.1+调度的概念、层次

CHS_01.2.2.1调度的概念、层次 调度的概念、层次知识总览调度的基本概念调度的三个层次——高级调度![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/6957fdec179841f69a0508914145da36.png)调度的三个层次——低级调度调度的三个层次——中级调度补充知识&#xff…

大模型背景下计算机视觉年终思考小结(二)

1. 引言 尽管在过去的一年里大模型在计算机视觉领域取得了令人瞩目的快速发展&#xff0c;但是考虑到大模型的训练成本和对算力的依赖&#xff0c;更多切实的思考是如果在我们特定的小规模落地场景下的来辅助我们提升开发和落地效率。本文从相关数据集构造&#xff0c;预刷和生…

【STM32】STM32学习笔记-I2C通信外设(34)

00. 目录 文章目录 00. 目录01. I2C简介02. I2C外设简介03. I2C框图04. I2C基本结构05. 主机发送06. 主机接收07. 软件/硬件波形对比08. 预留09. 附录 01. I2C简介 I2C(Inter&#xff0d;Integrated Circuit)总线是一种由NXP&#xff08;原PHILIPS&#xff09;公司开发的两线式…

LightGlue: Local Feature Matching at Light Speed

一、论文概述 发表于&#xff1a; 2023 ICCV 作者信息&#xff1a;Philipp Lindenberger Paul-Edouard Sarlin Marc Pollefeys 对比算法&#xff1a;SuperGlue 代码&#xff1a;github.com/cvg/LightGlue 效果: 现有问题&#xff1a; 1&#xff09; SuperGlue 与其他基于 …

mybatis xml多表查询,子查询,连接查询,动态sql

项目结构 数据库表 student_type 表 student 表 依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency><dependency><groupId>org.…

使用zabbix-proxy进行分布式监控

目录 一、准备4台服务器 二、配置主从复制 1.准备环境 2.主机名解析 3.安装数据库 4.配置主库db1 5.配置从库db2 6.主从状态显示 三、db1&#xff0c;db2配置zabbix-agent 三、zabbix-server的配置 四、zabbix-proxy的配置 1.为您的平台安装和配置Zabbix-proxy a. …

beego的模块篇 - I18n国际化

1. i18n 安装导入 安装该模块&#xff1a; go get github.com/beego/i18n 导入引用包&#xff1a; import ("github.com/beego/i18n" ) conf 目录下就有 locale_en-US.ini 和 locale_zh-CN.ini 两个本地化文件。 本地化文件的文件名和后缀是随意的&#xff0c;不…

vector迭代器的失效

1.vector的底层 vector的底层就是由三个指针构成的 iterator _start 这个指针指向vector数据起始位置。 iterator _finish这个指针指向vector数据的结束位置。 iterator _end_of_shorage这个指针指向vector容量的位置。 2.迭代器失效的种类 2.1扩容引发的迭代器失效 例&…