在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 页面中手动设置
环境变量:
- 点击variables(变量)打开变量面板。
- 点击Environments(环境),打开环境变量面板
- 在左侧创建环境变量,,添加变量
- 选择该环境后,在 API 请求中使用 {{环境变量名}}。
在我们进行接口测试发送请求时,我们要用环境变量,需要选择对应的环境,因为环境变量是不公用的,只能在该环境下使用
使用环境变量时,我们在请求页面的params页面添加变量,添加方法为{{变量名}},如图所示。
全局变量:
- 点击variables(变量)打开变量面板。
- 点击Globals(全局变量),打开全局变量面板
- 在左侧创建变量。
- 创建完成后,在 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");//括号里的键值对可以自己修改
});
相关文章:
在postman中设置环境变量和全局变量以及五大常用响应体断言
一、什么是环境变量和全局变量 环境变量(Environment Variables)和全局变量(Global Variables)是 Postman 中用于存储和管理数据的两种变量类型,它们可以提高 API 测试的灵活性和可维护性。 1、 环境变量(…...
32单片机学习记录1之GPIO
32单片机学习记录1之GPIO 前置 GPIO口在单片机中扮演着什么角色? 在单片机中,GPIO口(General Purpose Input/Output) 是一种通用输入/输出接口,扮演着连接单片机与外部设备的桥梁角色。具体来说,它在单片…...
负载测试和压力测试的原理分别是什么
负载测试和压力测试是性能测试的两种主要类型,它们的原理和应用场景有所不同。 负载测试(Load Testing) 原理: 负载测试通过模拟实际用户行为,逐步增加系统负载,观察系统在不同负载下的表现。目的是评估系…...
openAI官方prompt技巧(二)
1. 赋予 ChatGPT 角色 为 ChatGPT 指定一个角色,让其从特定的身份或视角回答问题。这有助于生成针对特定受众或场景的定制化回答。 例如: 你是一名数据分析师,负责我们的市场营销团队。请总结上个季度的营销活动表现,并强调与未…...
javaEE-11.javaScript入门
目录 一.什么是javaScript 二.快速实现 三.JS引入方式 1.行内引入: 2.内部引入: 3.外部引入: 四.基础语法 1.变量 变量命名规则: 2.数据类型 3.运算符 五.JS对象 1.数组 创建数组: 2.操作数组 3.函数 函数注意事项: 函数参数: 4.对象 1.使用字面量 创建对象:…...
Word成功接入DeepSeek详细步骤
原理 原理是利用Word的VBA宏,写代码接入API。无需下载额外插件。 步骤一、注册硅基流动 硅基流动统一登录 注册这个是为了有一个api调用的api_key,有一些免费的额度可以使用。大概就是这个公司提供token,我们使用这个公司的模型调用deepsee…...
单片机简介
一、单片机简介 电脑和单片机性能对比 二、单片机发展历程 三、CISC VS RISC...
GitCode 助力 Dora SSR:开启游戏开发新征程
项目仓库(点击阅读原文链接可直达) https://gitcode.com/ippclub/Dora-SSR 跨越技术藩篱,构建游戏开发乐园 Dora SSR 是一款致力于打破游戏开发技术壁垒的开源游戏引擎。其诞生源于开发者对简化跨平台游戏开发环境搭建的强烈渴望࿰…...
[python SQLAlchemy数据库操作入门]-25.股票数据可视化:将 SQLAlchemy 数据呈现给用户
哈喽,大家好,我是木头左! 本文将探讨如何利用SQLAlchemy从数据库中提取股票数据,并使用现代数据可视化工具将这些数据以直观的方式呈现给用户。将通过一系列步骤来演示这个过程,包括设置环境、连接数据库、提取数据、处理数据以及最终的可视化展示。 安装必要的库 接下来…...
android的Lifecycle简介
嗯,我现在需要了解Android的Lifecycle组件。Lifecycle是Jetpack的一部分,对吧?听说它帮助管理Activity和Fragment的生命周期,避免内存泄漏。那它具体是怎么工作的呢? 首先,LifecycleOwner和LifecycleObser…...
SQL-leetcode—1327. 列出指定时间段内所有的下单产品
1327. 列出指定时间段内所有的下单产品 表: Products ------------------------- | Column Name | Type | ------------------------- | product_id | int | | product_name | varchar | | product_category | varchar | ------------------------- product_id 是该表主键(具…...
在Uniapp中使用阿里云OSS插件实现文件上传
在开发小程序时,文件上传是一个常见的需求。阿里云OSS(Object Storage Service)是一个强大的云存储服务,可以帮助我们高效地存储和管理文件。本文将介绍如何在Uniapp小程序中使用阿里云OSS插件实现文件上传功能。 1. 准备工作 首…...
C#中的序列化和反序列化
序列化是指将对象转换为可存储或传输的格式,例如将对象转换为JSON字符串或字节流。反序列化则是将存储或传输的数据转换回对象的过程。这两个过程在数据持久化、数据交换以及与外部系统的通信中非常常见 把对象转换成josn字符串格式 这个过程就是序列化 josn字符…...
IGBT的两级关断
IGBT(绝缘栅双极型晶体管)的两级关断(Two-stage turn-off)是一种优化关断过程的方法,主要用于减少关断时的电压过冲和dv/dt(电压变化率)过高的问题,特别是在大功率应用中(…...
TCP/IP 协议图解 | TCP 协议详解 | IP 协议详解
注:本文为 “TCP/IP 协议” 相关文章合辑。 未整理去重。 TCP/IP 协议图解 退休的汤姆 于 2021-07-01 16:14:25 发布 TCP/IP 协议简介 TCP/IP 协议包含了一系列的协议,也叫 TCP/IP 协议族(TCP/IP Protocol Suite,或 TCP/IP Pr…...
PyCharm结合DeepSeek-R1
PyCharm结合DeepSeek-R1,打造专属 AI 编程助手 在程序员的日常工作中,提高编程效率、快速解决代码问题是重中之重。今天给大家分享一个强强联合的组合 ——PyCharm 插件 Continue 与 DeepSeek-R1,它们能帮你打造出强大的个人 AI 编程助手。 …...
深入理解Java对接DeepSeek
其实,整个对接过程很简单,就四步,获取key,找到接口文档,接口测试,代码对接。 1.获取 KEY https://platform.deepseek.com/transactions 直接付款就是了(现在官网暂停充值2025年2月7日…...
【RabbitMQ的x-death头】消息死亡记录头流转示例
Header(name "x-death", required false) List<Map<String,Object>> xDeath 是用于捕获RabbitMQ自动生成的 消息死亡记录头信息。以下是详细解析和实际应用示例: x-death头的作用 死亡原因追踪:记录消息被拒绝/过期的完整生命周…...
【DeepSeek】在本地计算机上部署DeepSeek-R1大模型实战(完整版)
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能(AI)通过算法模拟人类智能,利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络(如ChatGPT&…...
二、通义灵码插件保姆级教学-IDEA(使用篇)
一、IntelliJ IDEA 中使用指南 1.1、代码解释 选择需要解释的代码 —> 右键 —> 通义灵码 —> 解释代码 解释代码很详细,感觉很强大有木有,关键还会生成流程图,对程序员理解业务非常有帮忙,基本能做到哪里不懂点哪里。…...
北斗导航 | 基于多假设解分离(MHSS)模型的双星故障监测算法(MATLAB代码实现——ARAIM)
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 双星故障监测算法 一、多星故障MHSS模型流程1、数据预处理2、构建假设模…...
OpenCV2D 特征框架 (22)人脸检测的一个类cv::FaceDetectorYN的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::FaceDetectorYN 是 OpenCV 中用于人脸检测的一个类,它基于深度学习模型实现。这个类是 OpenCV DNN(Deep Neural Netw…...
微信小程序页面制作——婚礼邀请函(含代码)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
django中间件,中间件给下面传值
1、新建middleware.py文件 # myapp/middleware.py import time from django.http import HttpRequest import json from django.http import JsonResponse import urllib.parse class RequestTimeMiddleware:def __init__(self, get_response):self.get_response get_respons…...
调用DeepSeek官方的API接口
效果 前端样式体验链接:https://livequeen.top/deepseekshow 准备工作 1、注册deepseek官网账号 地址:DeepSeek 点击进入右上角【API开放平台】,并进行账号注册。 2、注册完成后,依次点击【API keys】-【生成API key】&#x…...
C++--iomanip库
目录 1. 设置字段宽度:std::setw() 2. 设置浮点数精度:std::setprecision() 3. 设置填充字符:std::setfill() 4. 控制对齐方式:std::left 和 std::right,std::internal 5. 控制进制输出:std::hex、std…...
程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<8>
大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们复习前面学习的指针知识 目录 关于指针数组和数组指针的区别指针数组(Array of Poi…...
redo和binlog区别
事务是数据库区别于文件系统的最重要功能,数据库事务支持ACID四个特性,其中I:隔离性是通过锁的方式实现的,剩下的A:原子性 C:一致性 D:持久性是通过redo日志、undo日志、binlog日志来实现的。 我…...
2.11学习记录
web——CTFHub XSS学习 学习资料:xss(跨站攻击) 原理 1.黑客发送带有xss恶意脚本的链接给用户 2.用户点击了恶意链接,访问了目标服务器(正常的服务器) 3.目标服务器(正常的服务器)…...
Packer 手动修复安装腾讯云插件
文章目录 Packer [腾讯云插件文档](https://developer.hashicorp.com/packer/integrations/hashicorp/tencentcloud) 提供的版本:v1.2.0,目前 Packer 构建镜像时,不支持现有2种[硬盘类型](https://www.tencentcloud.com/zh/document/product/…...
【探索未来科技】2025年国际学术会议前瞻
【探索未来科技】2025年国际学术会议前瞻 【探索未来科技】2025年国际学术会议前瞻 文章目录 【探索未来科技】2025年国际学术会议前瞻前言1. 第四届电子信息工程、大数据与计算机技术国际学术会议( EIBDCT 2025)代码示例:机器学习中的线性回…...
【Elasticsearch】Bucket Count K-S Test 聚合
Bucket Count K-S Test是 Elasticsearch 中的一种兄弟管道聚合(sibling pipeline aggregation),用于执行双样本柯尔莫哥洛夫-斯米尔诺夫检验(Kolmogorov-Smirnov Test,简称 K-S 检验)。这种聚合主要用于比较…...
LINUX——基础指令
引言 Linux 操作系统以其强大的命令行工具著称,掌握基础指令是高效使用 Linux 的必备技能。无论是文件管理、文本处理还是系统监控,命令行都能以极简的操作完成复杂任务。本文系统梳理 Linux 最核心的 30 基础指令,配合实际场景案例和进阶技…...
Expo运行模拟器失败错误解决(xcrun simctl )
根据你的描述,问题主要涉及两个方面:xcrun simctl 错误和 Expo 依赖版本不兼容。以下是针对这两个问题的解决方案: 解决 xcrun simctl 错误 错误代码 72 通常表明 simctl 工具未正确配置或路径未正确设置。以下是解决步骤: 确保 …...
Spring中常见的设计模式
Spring框架是一个庞大的生态系统,设计模式的应用广泛分布在其各个模块中。以下是针对你提到的设计模式,在Spring源码中的具体应用位置: 单例模式(Singleton Pattern): 在org.springframework.beans.factory…...
502 Bad Gateway 错误详解:从表现推测原因,逐步排查直至解决
502 Bad Gateway 错误通常意味着服务器之间的通信失败,但导致的具体原因往往因场景而异。 场景一:高峰期频繁出现 502 错误 1.1 现象 在流量高峰期间(如促销活动、直播发布等),页面访问变慢甚至出现 502 错误&#…...
【DeepSeek】deepseek可视化部署
目录 1 -> 前文 2 -> 部署可视化界面 1 -> 前文 【DeepSeek】DeepSeek概述 | 本地部署deepseek 通过前文可以将deepseek部署到本地使用,可是每次都需要winR输入cmd调出命令行进入到命令模式,输入命令ollama run deepseek-r1:latest。体验很…...
基于STM32的ADS1230驱动例程
自己在练手项目中用到了ADS1230,根据芯片手册自写的驱动代码,已测可用,希望对将要用到ADS1230芯片的人有所帮助。 芯片:STM32系列任意芯片、ADS1230 环境:使用STM32CubeMX配置引脚、KEIL 部分电路: 代码…...
计算机毕业设计springboot+vue.js就业数据采集分析平台 mybatis-plus(LW文档+PPT+讲解+代码安装)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
关于“#pragma arm section zidata = “mgr_buffer_section“的解析
#pragma arm section zidata “mgr_buffer_section” 是 ARM 编译器特有的指令,用于控制变量在内存中的分配位置。其作用如下: 核心解析 #pragma arm section 这是 ARM 编译器支持的编译指示(pragma),用于指定代码或…...
【MySQL】InnoDB存储页的独立表空间
目录 1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【7】XDES Entry链表【8】XDES Entry链表基节点【9】INODE Entry段结构【10】FIL_PAGE_TYPE_FSP_HDR页类型【11】FIL_PAGE_IBUF_BITMAP页类型【12】FIL_PAGE_INODE页类型【13…...
RabbitMQ的死信队列的产生与处理
死信队列(Dead Letter Queue, DLQ) 1. 死信(Dead Letter)是怎么产生的? 在 RabbitMQ 中,消息会变成 死信(Dead Letter)的常见情况有以下几种: 消息被拒绝(R…...
二分算法篇:二分答案法的巧妙应用
二分算法篇:二分答案法的巧妙应用 那么看到二分这两个字想必我们一定非常熟悉,那么在大学期间的c语言的教学中会专门讲解二分查找,那么我们来简单回顾一下二分查找算法,我们知道二分查找是在一个有序的序列中寻找一个数在这个序列…...
实现:多活的基础中间件
APIRouter : 路由分发服务 API Router 是一个 HTTP 反向代理和负载均衡器,部署在公有云中作为 HTTP API 流量的入口,它能识别 出流量的归属 shard ,并根据 shard 将流量转发到对应的 ezone 。 API Router 支持多种路由键&am…...
【分布式理论9】分布式协同:分布式系统进程互斥与互斥算法
文章目录 一、互斥问题及分布式系统的特性二、分布式互斥算法1. 集中互斥算法调用流程优缺点 2. 基于许可的互斥算法(Lamport 算法)调用流程优缺点 3. 令牌环互斥算法调用流程优缺点 三、三种算法对比 在分布式系统中,多个应用服务可能会同时…...
百问网imx6ullpro调试记录(linux+qt)
调试记录 文章目录 调试记录进展1.开发板相关1.1百问网乌班图密码 1.2 换设备开发环境搭建串口调试网络互通nfs文件系统挂载 1.3网络问题1.4系统启动1.5进程操作 2.QT2.1tslib1.获取源码2.安装依赖文件3.编译 2.2qt移植1.获取qt源码2.配置编译器3.编译 2.3拷贝到开发板1.拷贝2.…...
微信小程序如何使用decimal计算金额
第三方库地址:GitHub - MikeMcl/decimal.js: An arbitrary-precision Decimal type for JavaScript 之前都是api接口走后端计算,偶尔发现这个库也不错,计算简单,目前发现比较准确 上代码 导入js import Decimal from ../../uti…...
win32汇编环境,对线程的创建与操作示例二
;运行效果 ;win32汇编环境,对线程的创建与操作示例二 ;本文主要是实现用CreateThread创建线程时,如何把参数传入进去 ;以下举3个例子说明,如何把数值、字符串和自定义结构传入线程之中 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>…...
React(三)
动态控制显示和css import { useState } from "react"; import "./index.css"; const list [{ id: 1, username: "aaName", content: "一条评论", ctime: "10-18 08:15" },{ id: 2, username: "bbName", conten…...
GitHub Pages + Jekyll 博客搭建指南(静态网站搭建)
目录 🚀 静态网站及其生成工具指南🌍 什么是静态网站?📌 静态网站的优势⚖️ 静态网站 VS 动态网站 🚀 常见的静态网站生成器对比🛠️ 使用 GitHub Pages Jekyll 搭建个人博客📌 1. 创建 GitHu…...