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

server/2025/2/12 22:54:39/

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

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

1、 环境变量(Environment Variables)

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

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

2、全局变量(Global Variables)

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

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

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

postman_23">二、为什么要在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_96">四、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");//括号里的键值对可以自己修改
});

http://www.ppmy.cn/server/167172.html

相关文章

Oracle(OCP和OCM)

Oracle的OCP(Oracle Certified Professional)和OCM(Oracle Certified Master)是数据库领域广受认可的专业认证,分别针对不同技术水平和职业目标的人群。以下是它们的核心区别、考试要求及职业价值分析: 1. …

云计算如何推动数字化转型?

云计算是数字化转型的核心驱动力,它通过提供灵活、可扩展、高效的技术基础设施,帮助企业快速响应市场变化、优化业务流程、创新商业模式。 一、技术赋能:构建敏捷、智能的数字底座 1. 弹性基础设施打破资源瓶颈 按秒计费的算力革命 案例&…

数据结构与算法学习笔记----背包问题

数据结构与算法学习笔记----背包问题 author: 明月清了个风 first publish time: 2025.2.7 ps⭐️讲解了几种经典的背包问题:01背包,完全背包,多重背包及其变形,分组背包,讲解了他们的异同及对应的代码和优化方式&am…

《pytorch》——优化器的解析和使用

优化器简介 在 PyTorch 中,优化器(Optimizer)是用于更新模型参数以最小化损失函数的关键组件。在机器学习和深度学习领域,优化器是一个至关重要的工具,主要用于在模型训练过程中更新模型的参数,其目标是最…

JUnit 5 中获取测试类、测试方法及属性的注解

JUnit 5 中获取测试类、测试方法及属性的注解 JUnit 5 提供了强大的扩展机制,允许通过 ExtensionContext 获取测试类、测试方法及其属性上的注解信息。以下是具体实现方法和示例: 一、核心 API ExtensionContext 提供测试执行的上下文信息,包…

了解数据链路层

目录 一、认识以太网 二、以太网帧格式 三、认识MTU MTU对IP协议的影响 MTU对UDP协议的影响 MTU对TCP协议的影响 四、ARP协议 ARP协议的作用 ARP协议的工作流程 数据链路层的作用是解决如何正确在链路内找到和传输数据给局域网内的设备。数据链路层有很多种协议&#x…

git客户端版本下载

1. 访问官方网站:您可以在git官方网站(https://git-scm.com)上找到git软件最新稳定版下载链接。 2.如果需要下载其它版本,可访https://github.com/git-for-windows/git/releases选择想要的版本下载。

石英表与机械表的世纪之争(Quartz vs. Mechanical Watches):瑞士钟表业的危机与重生(中英双语)

石英表与机械表的世纪之争:瑞士钟表业的危机与重生 本文灵感来源: 日本制造业在战后复兴,日本精工公司作为日本制造业的代表,研究出了如何将石英制作成音叉的方法。1969年,精工公司推出了世界上第一款石英水晶天文台表…