在postman中设置环境变量和全局变量以及五大常用响应体断言

一、什么是环境变量和全局变量

环境变量(Environment Variables)和全局变量(Global Variables)是 Postman 中用于存储和管理数据的两种变量类型,它们可以提高 API 测试的灵活性和可维护性。

1、 环境变量(Environment Variables)

环境变量是与特定环境关联的变量,适用于需要在不同环境(如开发、测试、生产三种环境,与测试有关的只有测试和生产两种环境)之间切换的情况。

特点:
局限于特定环境:只有在选中的环境下才能使用该变量。
适用于不同的环境配置,如 base_url、auth_token、数据库连接信息等。
优先级高于全局变量(如果变量名相同,环境变量会覆盖全局变量)。

2、全局变量(Global Variables)

全局变量是适用于所有环境的变量,不依赖于某个特定环境。

特点
适用于所有 Postman 请求,无论当前环境是什么。
适合存储通用信息,如 API 版本号、默认超时时间、默认用户 ID 等。
优先级低于环境变量(如果变量名相同,环境变量的值会覆盖全局变量的值)。

环境变量和全局变量对比图

二、为什么要在postman中设置变量

1、为了适应不同的测试环境,避免手动修改 API 请求 URL、认证信息。
2、方便团队协作,工作中肯定不止你一个测试人员,使用变量可以让每个成员可以使用不同的环境配置,而无需修改请求内容。
3、避免重复修改,当测试环境变更时,只需修改变量值,而不需要修改所有相关 API 请求。
4、共享数据,可用于存储临时的计算数据或跨请求共享数据(如 token、请求结果等)

总的来说,就是为了提高效率,我们设置一个变量,变量数据可以让不同的用例直接引用,还可以将这个用例的请求结果,当作下一个用例的请求数据,即接口和接口之间调用 依赖关系,需要借助全局变量和环境变量来解决关联问题。
例子:A接口返回的数据供B接口使用。

1.组织A接口http请求数据,发送 A接口 请求。
2.获取 A接口 返回的 响应数据,写入全局、环境变量中
3.组织 B接http请求,从 全局、环境变量中 获取 A返回的数据。

三、如何设置环境变量和全局变量

1、在 Postman UI 页面中手动设置

环境变量:

  1. 点击variables(变量)打开变量面板。
  2. 点击Environments(环境),打开环境变量面板
  3. 在左侧创建环境变量,,添加变量
  4. 选择该环境后,在 API 请求中使用 {{环境变量名}}。

在这里插入图片描述
在我们进行接口测试发送请求时,我们要用环境变量,需要选择对应的环境,因为环境变量是不公用的,只能在该环境下使用
在这里插入图片描述
使用环境变量时,我们在请求页面的params页面添加变量,添加方法为{{变量名}},如图所示。
在这里插入图片描述
全局变量:

  1. 点击variables(变量)打开变量面板。
  2. 点击Globals(全局变量),打开全局变量面板
  3. 在左侧创建变量。
  4. 创建完成后,在 API 请求中使用 {{全局变量名}}。

在这里插入图片描述
使用全局变量时,直接在请求页面的params页面添加变量,添加方法为{{变量名}},全局变量不需要选择环境,直接添加即可。

2、 在 Postman 脚本中动态设置

在 Script下的 Pre-request或 Post-response 中使用 JavaScript 代码创建变量,图中 Pre-request是在请求前设置, Post-response是在请求结束获取响应后时设置变量,可根据实际情况创建变量。
在这里插入图片描述
设置环境变量:

pm.environment.set("变量名", "变量值");

获取环境变量:

var 变量名 = pm.environment.get("变量值");
console.log(变量名);

设置全局变量:

pm.globals.set("变量名", "变量值");

获取全局变量

var 变量名= pm.globals.get("变量名");
console.log(变量名);

这里介绍的只是创建变量和获取变量的语法,具体的还要根据具体实际来设置,比如先从本次响应中获取想要的变量值,再将它赋值给变量,然后才能再其他用例中用到。写完语法,点击发送请求,然后去 Postman UI 页面中查看是否有你设置的变量,下图就是创建成功的例子。
在这里插入图片描述

四、postman五大常用断言

下面这五大常用断言在postman中都可以找到,我们如果要使用只需要点击,就会自动添加到左边的脚本框中,然后我们将变量名,断言结果修改为我们所要用的即可,无需全部自己编写。
在这里插入图片描述
1、断言响应状态码是否为为200,是200则返回"成功",返回的值我们是可以修改的,例如我们可以改为"啦啦啦,请求发送成功啦",可以设置为你像设置的任何语句,但是为了方便和易懂一般设置为成功。

// 1、断言响应状态码为200
pm.test("成功", function () {
    pm.response.to.have.status(200);
});

2、断言响应体包含某字符,同样的断言成功后的返回值我们都是可以修改的。include(“操作成功”),括号里填写的是你所要验证的响应体里是否包含的字符,

//2、响应体包含某字符
pm.test("响应体包含操作成功字符", function () {
    pm.expect(pm.response.text()).to.include("操作成功");
});

pm.test("响应体包含10000字符", function () {
    pm.expect(pm.response.text()).to.include("10000");
});

3、断言响应体等于某个对象或字符串,同样的test后面的断言成功后的返回值我们都是可以修改的

// 3、断言响应体等于某个对象或字符串
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

//例子
pm.test("断言响应体等于某个对象或字符串", function () {
    pm.response.to.have.body
    ({
    "success": true,
    "code": 10000,
    "message": "操作成功!",
    "data": "1b2d9a94-75e8-49de-acbd-6f5c644aa2c5"
});
});

4、断言响应体中的json数据,下面是三个例子。

//4、断言响应体中的json数据
pm.test("响应体中json数据的code为", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.code).to.eql(10000);
});


pm.test("响应体中json数据的success为", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.success).to.eql(true);
});

pm.test("响应体中json数据的message为", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.message).to.eql("操作成功!");
});

// var jsonData=pm.response.json();意思是定义一个变量,名称叫 jsonData ,值为:json格式的响应体数据
// pm.expect(jsonData.value).to.eql(100);意思是:postman 预期 json 格式的响应结果中 xxx(key)的值为 xxx
// value可以替换为:success、code、message、data
// to.eq1()中的值对应为:true、10000、"操作成功!"、"fe565654-7540-4c64-9949-3d4bf5ad03a4

5、下面这个是断言响应体的数据类型。

//5、断言响应头Content-Type
pm.test("断言响应头有Content-Type", function () {
    pm.response.to.have.header("Content-Type","application/json;charset=UTF-8");//括号里的键值对可以自己修改
});

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis数据库(二):Redis 常用的五种数据结构

Redis 能够做到高性能的原因主要有两个,一是它本身是内存型数据库,二是采用了多种适用于不同场景的底层数据结构。 Redis 常用的数据结构支持字符串、列表、哈希表、集合和有序集合。实现这些数据结构的底层数据结构有 6 种,分别是简单动态字…

C++STL(六)——list模拟

目录 本次所需实现的三个类一、结点类的模拟实现构造函数 二、迭代器类的模拟实现为什么有迭代器类迭代器类的模板参数说明构造函数运算符的重载- -运算符的重载和!运算符的重载*运算符的重载->运算符的重载引入模板第二个和第三个参数 三、list的模拟实现3.1 默认成员函数构…

国产编辑器EverEdit - 替换功能详解

1 替换 1.1 应用场景 替换文本是在文档编辑过程中不可回避的操作,是将指定的关键词替换为新的文本,比如:写代码时修改变量名等。 1.2 使用方法 1.2.1 基本替换 使用主菜单查找 -> 替换,或使用快捷键Ctrl H,会打…

LIMO:上海交大的工作 “少即是多” LLM 推理

25年2月来自上海交大、SII 和 GAIR 的论文“LIMO: Less is More for Reasoning”。 一个挑战是在大语言模型(LLM)中的复杂推理。虽然传统观点认为复杂的推理任务需要大量的训练数据(通常超过 100,000 个示例),但本文展…

防御保护作业二

拓扑图 需求 需求一: 需求二: 需求三: 需求四: 需求五: 需求六: 需求七: 需求分析 1.按照要求进行设备IP地址的配置 2.在FW上开启DHCP功能,并配置不同的全局地址池,为…

蓝桥与力扣刷题(226 翻转二叉树)

题目:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2: 输入:root [2,1,3] 输出:[2,…

大型语言模型(LLM)中的自适应推理预算管理:基于约束策略优化的解决方案

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

[EAI-033] SFT 记忆,RL 泛化,LLM和VLM的消融研究

Paper Card 论文标题:SFT Memorizes, RL Generalizes: A Comparative Study of Foundation Model Post-training 论文作者:Tianzhe Chu, Yuexiang Zhai, Jihan Yang, Shengbang Tong, Saining Xie, Dale Schuurmans, Quoc V. Le, Sergey Levine, Yi Ma 论…

大数据-259 离线数仓 - Griffin架构 修改配置 pom.xml sparkProperties 编译启动

点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! 目前开始更新 MyBatis,一起深入浅出! 目前已经更新到了: Hadoop&#xff0…

【时时三省】(C语言基础)基础习题1

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 1.什么是程序?什么是程序设计 程序是为实现特定目标或解决特定问题,用计算机能理解和执行的语言编写的一系列指令的集合。 程序设计是问题分析,设计算法…

防火墙用户认证实验

1、创建vlan10和vlan20 2、将接口划分到对应的vlan中 [FW]interface GigabitEthernet 1/0/1.1 [FW-GigabitEthernet1/0/1.1]ip address 172.16.1.254 24 [FW-GigabitEthernet1/0/1.1]vlan-type dot1q 10 [FW]interface GigabitEthernet 1/0/1.2 [FW-GigabitEthernet1/0/1.1]ip …

VUE项目中实现权限控制,菜单权限,按钮权限,接口权限,路由权限,操作权限,数据权限实现

VUE项目中实现权限控制,菜单权限,按钮权限,接口权限,路由权限,操作权限,数据权限实现 权限系统分类(RBAC)引言菜单权限按钮权限接口权限路由权限 菜单权限方案方案一:菜单…

ESXi Host Client创建ubuntu虚拟机教程及NVIDIA显卡驱动安装

参考文章 VMware虚拟机显卡直通记录 AIGC 实战(环境篇) - EXSI 8.0 Debian安装RTX3060显卡驱动 重点介绍 client版本是7.0.3 注意:下图中不要选择BIOS 按照两个链接中的方法进行操作,以及本章节的上面几个图片的配置之后&a…

DeepSeek帮助做【真】软件需求-而不是批量刷废话

尝试给DeepSeek一份系统用例规约,让它帮判断哪些地方还没有覆盖涉众利益。结果见以下 需求工作的重点可以放在建模精细的真实现状流程和精细的真实涉众利益上,AI帮助推演系统需求。

apache-poi导出excel数据

excel导出 自动设置宽度&#xff0c;设置标题框&#xff0c;设置数据边框。 excel导出 添加依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version></dependency>…

10 FastAPI 的自动文档

FastAPI 是一个功能强大且易于使用的 Web 框架&#xff0c;它的最大亮点之一就是内置的 自动文档生成 功能。通过集成 Swagger UI 和 ReDoc&#xff0c;FastAPI 可以自动为我们的 API 生成交互式文档。这不仅使得开发者能够更快速地了解和测试 API&#xff0c;还能够为前端开发…

微软AI研究团队推出LLaVA-Rad:轻量级开源基础模型,助力先进临床放射学报告生成

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

mysql8.0使用MHA实现高可用

一、MHA 介绍 MHA&#xff08;Master HA&#xff09;是一款开源的 MySQL 的高可用程序&#xff0c;它为 MySQL 主从复制架构提供了 automating master failover 功能。MHA 在监控到 master 节点故障时&#xff0c;会提升其中拥有最新数据的 slave 节点成为新的master 节点&…

D3实现站点路线图demo分享

分享通过D3实现的站点路线分布图demo&#xff0c;后续会继续更新其他功能。 功能点 点位弹窗 效果图如下&#xff1a; 轨迹高亮 效果图如下&#xff1a; 添加路线箭头 箭头展示逻辑&#xff1a;根据高速路线最后两个点位&#xff0c;计算得出箭头的点位 效果图如下&#x…

【系统架构设计师】操作系统 ③ ( 存储管理 | 页式存储弊端 - 段式存储引入 | 段式存储 | 段表 | 段表结构 | 逻辑地址 的 合法段地址判断 )

文章目录 一、页式存储弊端 - 段式存储引入1、页式存储弊端 - 内存碎片2、页式存储弊端 - 逻辑结构不匹配3、段式存储引入 二、段式存储 简介1、段式存储2、段表3、段表 结构4、段内地址 / 段内偏移5、段式存储 优缺点6、段式存储 与 页式存储 对比 三、逻辑地址 的 合法段地址…