Postman进阶篇(十)-在pre-request script或test script中使用pm对象访问变量

news2025/1/16 15:58:45
  • 在之前的文章中介绍过postman中的两个脚本——pre-request script或test script,在这两个脚本中都有使用到pm对象。(pre-request script详细介绍、Test script详细介绍)
  • pm对象是在postman的脚本中非常重要,也是十分常用的方法。
  • 本篇主要介绍pm对象的使用方法中变量的访问与操作部分。
  • 关于Postamn中的变量可以查看专栏之前的文章:Postman中的变量

文章目录

  • 一、pm对象介绍
  • 二、使用PM对象访问变量
    • (1)判断变量是否存在
    • (2)获取变量的值
    • (3)设置变量的值
    • (4)在脚本中使用动态变量
    • (5)返回所有变量与值
    • (6)删除指定变量
    • (7)清空指定范围内的变量
    • (8)将数据变量转换为json格式
  • 附录:postman系列文章目录

一、pm对象介绍

  • pm对象是Postman提供的可以在请求脚本中使用的JavaScript API。
  • pm对象提供对请求和响应数据以及变量的访问,使用pm对象可以对请求数据或响应数据的进行操作。

二、使用PM对象访问变量

  • 下面的介绍当中不仅有涉及到脚本、变量的知识(pre-request script详细介绍、Test script详细介绍、Postman中的变量)
  • 在举例的过程中也有使用到控制台,具体介绍可以查看文章:console控制台
  • 使用pm.*可以访问和操作Postman中每个作用域的变量。

(1)判断变量是否存在

pm.*.has("变量名")
  • 这个方法返回值为布尔值:true 代表此变量存在;false 代表此变量不存在
  • 根据变量的范围,这个方法可以分为以下几种:
    1. 在所有范围中判断变量是否存在
      pm.variables.has("变量名")
      
    2. 在环境变量中判断变量是否存在
      pm.environment.has("变量名")
      
    3. 在集合变量中判断变量是否存在
      pm.collectionVariables.has("变量名")
      
    4. 在全局变量中判断变量是否存在
      pm.globals.has("变量名")
      
    5. 在数据变量中判断变量是否存在
      pm.iterationData.has("变量名")
      
  • 举例: 以pm.variables.has(“变量名”)为例。如下图,全局变量存在变量“test”,pm.variables.has()方法返回的是true;变量“test_2”不存在,pm.variables.has()方法返回的是false。
    在这里插入图片描述

(2)获取变量的值

pm.*.get("变量名")
  • 这个方法返回指定变量的值,如果变量不存在则返回“undefined”
  • 根据变量的范围,这个方法可以分为以下几种:
    1. 在所有范围中获取变量的值

      pm.variables.get("变量名")
      
      • 注意: 当多个范围内都有相同key的变量时,使用pm.variables.get()方法时会返回最接近的范围内的变量。简而言之,顺序如下:
        Local(局部变量)> Data(数据变量)> Environment(环境变量)> Collection(集合变量)> Global(全局变量)
        例如:在Environment(环境变量)中有一个test=1,Global(全局变量)中有一个test=2,使用pm.variables.get(“test”)将会返回1
    2. 在环境变量中获取变量的值

      pm.environment.get("变量名")
      
    3. 在集合变量中获取变量的值

      pm.collectionVariables.get("变量名")
      
    4. 在全局变量中获取变量的值

      pm.globals.get("变量名")
      
    5. 在数据变量中获取变量的值

      pm.iterationData.get("变量名")
      
  • 举例: 以pm.variables.get(“变量名”)为例。如下图,全局变量存在变量“test”,使用pm.variables.get()方法能够返回“test”变量的值;变量“test_2”不存在,使用pm.variables.has()方法返回的是“undefined”。
    在这里插入图片描述

(3)设置变量的值

pm.*.set("变量名", "值")
  • 这个方法可以修改指定变量的值,如果变量不存在则根据传入方法的变量名和值新增一个变量。
  • 根据变量的范围,这个方法可以分为以下几种:
    1. 新增本地变量或修改指定变量的值
      pm.variables.set("变量名", "值")
      
    • 注意,使用这个方法设置变量的值时,不会修改变量原始值,而是生成一个临时的本地变量,仅在当前请求或运行集合时生效。
    • 如下图,全局变量存在变量“test”,在使用pm.variables.set()方法改变变量的值后,打印出来的已经是新的值,但是全局变量中“test”变量的值并没有改变。
      在这里插入图片描述
    1. 新增环境变量或修改环境变量内指定变量的当前值
      pm.environment.set("变量名", "值")
      
    2. 新增集合变量或修改集合变量内指定变量的当前值
      pm.collectionVariables.set("变量名", "值")
      
    3. 新增全局变量或修改全局变量内指定变量的当前值
      pm.globals.set("变量名", "值")
      
    4. 与 .get() .has()不同,数据变量不支持 .set() 这个方法。
  • 举例: 以pm.environment.set()为例。如下图,环境变量存在变量“Environment_test”,使用pm.environment.set.set()方法,会修改原变量的当前值;变量“New_Environment”不存在,会新增一个变量。
    • 运行前:在这里插入图片描述
    • 运行后:
      在这里插入图片描述

(4)在脚本中使用动态变量

pm.*.replaceIn("{{变量名}}")
  • 这个方法是专门用于在脚本中使用动态变量,在专栏的前一篇文章中也有详细介绍过这个方法。
    (动态变量(Dynamic variables)详细介绍)
  • 使用这个方法,可以返回字符串中动态变量的解析值,最终的返回值也是字符串。例如:
    	console.log(pm.variables.replaceIn("返回一个随机时间戳:{{$timestamp}}"))
    

在这里插入图片描述

  • 除pm.variables.replaceIn()之外,指定变量的范围,还可以解析对应范围内的变量:
    1. 只能解析动态变量
      pm.variables.replaceIn("{{变量名}}")
      
    2. 可以解析动态变量和环境变量
      pm.environment.replaceIn("{{变量名}}")
      
    3. 可以解析动态变量和集合变量
      pm.collectionVariables.replaceIn("{{变量名}}")
      
    4. 可以解析动态变量和全局变量
      pm.globals.replaceIn("{{变量名}}")
      
    5. 在数据变量不支持这个方法
  • 举例:同时在字符串中引用环境变量、动态变量、全局变量。
    str_var = "环境变量:{{Environment_test}},动态变量:{{$timestamp}},全局变量:{{global_test}}"
    console.log("使用环境变量的方法:",pm.environment.replaceIn(str_var));
    console.log("使用全局变量的方法:",pm.globals.replaceIn(str_var));
    
    • 运行脚本之后可以看到,使用pm.environment.replaceIn({{变量名}})只能解析出动态变量和环境变量,使用pm.globals.replaceIn({{变量名}})只能解析出动态变量和全局变量。
      在这里插入图片描述

(5)返回所有变量与值

pm.*.toObject()
  • 这个方法返回一个对象,该对象包含指定范围内所有变量及其值。

  • 根据变量的范围,这个方法可以分为以下几种:

    1. 返回所有变量
      pm.variables.toObject()
      
    • 这个方法,返回的变量根据优先级顺序。
      优先级顺序: Global(全局变量)、Collection(集合变量)、Environment(环境变量)、Data(数据变量)、Local(局部变量)】
    • 运行后可以看到这个方法按顺序返回了所有变量。
      在这里插入图片描述
    1. 返回环境变量中的所有变量
      pm.environment.toObject()
      
    2. 返回集合变量中的所有变量
      pm.collectionVariables.toObject()
      
    3. 返回全局变量中的所有变量
      pm.globals.toObject()
      
    4. 返回数据变量中的所有变量
      pm.iterationData.toObject()
      
  • 举例:以pm.environment.toObject()为例,运行后可以看到这个方法返回了所有环境变量。
    在这里插入图片描述

(6)删除指定变量

pm.*.unset("变量名")
  • 这个方法可以删除指定范围内的指定变量。
  • 根据变量的范围,这个方法可以分为以下几种:
    1. 这个方法需要指定范围,所以pm.variables 不支持这个方法。
    2. 从环境变量中删除指定变量
      pm.environment.unset("变量名")
      
    3. 从集合变量中删除指定变量
      pm.collectionVariables.unset("变量名")
      
    4. 从全局变量中删除指定变量
      pm.globals.unset("变量名")
      
    5. 从数据变量中删除指定变量
      pm.iterationData.unset("变量名")
      
  • 举例:以pm.environment.unset(“变量名”)为例,删除环境变量"New_Environment"
    在这里插入图片描述
    • 运行脚本后,可以看到这个变量被删掉了
      在这里插入图片描述

(7)清空指定范围内的变量

pm.*.clear()
  • 这个方法可以清空指定范围内的所有。
  • 根据变量的范围,这个方法可以分为以下几种:
    1. 这个方法需要指定范围,所以pm.variables 不支持这个方法。
    2. 清空环境变量
      pm.environment.clear()
      
    3. 清空集合变量
      pm.collectionVariables.clear()
      
    4. 清空全局变量
      pm.globals.clear()
      
    5. 清空数据变量
      pm.iterationData.clear()
      
  • 举例:以pm.environment.clear()为例
    在这里插入图片描述
    • 运行之后可以看到,所有环境变量都被删除了
      在这里插入图片描述

(8)将数据变量转换为json格式

pm.iterationData.toJSON()
  • 顾名思义,这个方法只提供给数据变量使用。

附录:postman系列文章目录

零基础入门接口功能测试教程-目录

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tomcat使用与Servlet

目录 Tomcat Get与Post请求的区别 Servlet 体系 请求流程 生命周期 配置loadOnStartup 线程安全问题 问题原因 解决方案 Servlet核心类 请求 响应 转发与重定向 转发 重定向 Cookie与HttpSession Cookie HttpSession ServletConfig ServletContext 总结 F…

基于javaweb,ssm学生宿舍管理系统(带论文)

开发工具:IDEA 服务器:Tomcat8.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,非前后端分离 前端技术:vue.jselementUI等框架实现 服务端技术:springspringmvcmybat…

Java--Lambda(1)简介

文章目录0 写在前面1 优点2 实现3 写在末尾0 写在前面 阅读公司前辈写的代码的时候,有一些地方总不理解,后来才知道是Lambda表达式。 所以学习了一下,在此记录一下。 通过百度搜索得知:Lambda 表达式也叫作匿名函数&#xff0c…

简单易懂的 全景图高清下载方法以及原理简要解析(支持下载建E、720yun、酷雷曼、景站、酷家乐、百度街景原图)

简单易懂的 全景图高清下载方法以及原理简要解析(支持下载建E、720yun、酷雷曼、景站、酷家乐、百度街景原图) 文章目录简单易懂的 全景图高清下载方法以及原理简要解析(支持下载建E、720yun、酷雷曼、景站、酷家乐、百度街景原图&#xff09…

【Linux】在Xilinx平台上实现UVC Gadget(1)

【Linux】在Xilinx平台上实现UVC Gadget(1)前言:关于UVC一、创建Petalinux工程并修改设备树1) 创建一个基本的petalinux工程2) 配置sstate和downloads3) 配置内核4) 修改设备树二、在petalinux下添加uvc-gadget测试程序1) 创建一个空应用程序…

Python爬虫采集框架——Scrapy初学入门

一、安装Scrapy依赖包 pip install Scrapy 二、创建Scrapy项目(tutorial) scrapy startproject tutorial 项目目录包含以下内容 tutorial/scrapy.cfg # deploy configuration filetutorial/ # projects Python module, youl…

Deformable Attention学习笔记

Deformable Attention学习笔记 Vision Transformer with Deformable Attention Abstract Transformer 最近在各种视觉任务中表现出卓越的表现。大的(有时甚至是全局的)接受域使Transformer模型比CNN模型具有更高的表示能力。然而,单纯扩大接受野也会引起一些问题…

Linux【进程间通信】

目录 一、什么是进程间通信 管道 管道的原理 匿名管道 1.简单写一个管道 2.总结管道的特点,理解以前的管道 3.扩展 如何写一个进程池? 创建Makefile文件 创建我们的任务头文件Task.cpp 创建我们的主程序文件 一、什么是进程间通信 进程的运…

java项目-第149期ssm师生交流平台_java毕业设计_计算机毕业设计

java项目-第149期ssm师生交流平台-java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm师生交流平台》 该项目分为3个角色,管理员、学生和老师。 学生可以浏览前台查看教学资源、申请做作业、论坛信息、新闻资讯等信息查看。 同时可以跳转…

[MQ] 延迟队列/延迟插件下载

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

Linux基本指令3——文件操作

Linux内核:Centos 7.6 64位 find指令 按文件名查找文件的用法:find [路径] -name [文件名] 作用:可以查找目标文件 找到后用nano,通过绝对路径打开目标文件。目前只需要知道这种程度就行了。 grep指令 语法:gre…

浅谈非线性回归(non-linear regression)

文章目录浅谈非线性回归(non-linear regression)引言最小二乘多项式拟合非线性拟合Gauss–NewtonGauss–NewtonGauss–Newton算法[1]Levenberg–MarquardtLevenberg–MarquardtLevenberg–Marquardt算法[2]Quasi−NewtonQuasi-NewtonQuasi−Newton方法&a…

这样做框架结构图,让你的PPT更有创意!

已剪辑自: https://zhuanlan.zhihu.com/p/58834710 嗨,各位木友们好呀,我是小木。 昨天,有个跟我一样鸟人的鸟人让我帮忙做个框架结构图: 可惜当时我不在办公室,不然我真的一分钟就能把图做给他… ▼ 在文本框里输入…

RabbitMQ_交换机

简单理解交换机在RabbitMQ中扮演的角色 交换机在RabbitMQ中扮演消息系统中枢,将从生产者处收集的消息转发至对应的消息队列处,等待消费者消费 提前说明交换机 与 routing key 与 消息队列的关系 channel.queueBind(queueName, exchangeName, routingKey)…

git4:git整合IDEA和国内代码托管中心码云(自建代码托管平台)

1.配置忽略文件 IDE会生成.idea等无关项目实际功能的文件忽略这些文件配置.ignore 然后再讲此配置文件导入.gitconfig文件中idea中导入git程序 2.测试IDEA vcs 直接项目中 git add commit即可切换版本(提交第二版,修改会变成蓝色,然后提交…

血泪史!外包如何找到靠谱的兼职程序员?

好哥们公司上半年的重点项目,黄了。 公司是做线下项目起家的,受到各种不可抗力因素影响改为线上举办。这次的转型老板很看重,但由于整个公司都没有擅长这块的技术开发,于是托朋友找了个外包团队完成。 几十个W花进去,做…

进销存记账软件十大品牌合集,看看哪一款适合你

随着管理成本的提高,加上信息技术的发展,各行各业都要求应用专业的技术软件来提高管理效率,中小商户也不例外。 过往的手工记账已经满足不了需求,进销存记账软件应运而生。 进销存记账软件是时代的产物,也是中小商户…

带你Java入门(Java系列1)

目录 前言: 1.什么是Java 2.Java的语言特点 3.初识Java的main方法 4.注释 5.标识符 6.关键字 7.1基本数据类型 7.2引用数据类型 8.变量 8.1.整形变量 8.2.长整形变量 8.3浮点型变量 8.3.1单精度浮点型 8.3.2双精度浮点型 8.4字符型变量 8.5布尔型…

【计算机网络:自顶向下方法】(二)应用层

tm 【计算机网络:自顶向下方法】(二)应用层 文章目录应用层如何创建一个新的网络应用?2.1 应用层原理网络应用的体系结构对等模式(P2P:Peer To Peer)混合体:客户-服务器和对等体系结构进程通信分布式进程通信需要解决的问题问题1:进程…

CorelDRAW2023全新版功能及下载安装教程

CorelDraw2023是一款优秀的图形工具。有了它,不太专业的客户也可以做直观和简短的组成,由于其平滑和简单的用户界面。你可以一起做很多编辑工作。有了这个巨大的工具,你可以对你的图像、网站、商标和其他许多东西产生美丽而令人印象深刻的效果…