在之前的文章中介绍过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 代表此变量不存在。根据变量的范围,这个方法可以分为以下几种:

在所有范围中判断变量是否存在pm.variables.has("变量名")

在环境变量中判断变量是否存在pm.environment.has("变量名")

在集合变量中判断变量是否存在pm.collectionVariables.has("变量名")

在全局变量中判断变量是否存在pm.globals.has("变量名")

在数据变量中判断变量是否存在pm.iterationData.has("变量名")

举例: 以pm.variables.has(“变量名”)为例。如下图,全局变量存在变量“test”,pm.variables.has()方法返回的是true;变量“test_2”不存在,pm.variables.has()方法返回的是false。

(2)获取变量的值

pm.*.get("变量名")

这个方法返回指定变量的值,如果变量不存在则返回“undefined”根据变量的范围,这个方法可以分为以下几种:

在所有范围中获取变量的值 pm.variables.get("变量名")

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

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

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

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

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

(3)设置变量的值

pm.*.set("变量名", "值")

这个方法可以修改指定变量的值,如果变量不存在则根据传入方法的变量名和值新增一个变量。根据变量的范围,这个方法可以分为以下几种:

新增本地变量或修改指定变量的值pm.variables.set("变量名", "值")

注意,使用这个方法设置变量的值时,不会修改变量原始值,而是生成一个临时的本地变量,仅在当前请求或运行集合时生效。如下图,全局变量存在变量“test”,在使用pm.variables.set()方法改变变量的值后,打印出来的已经是新的值,但是全局变量中“test”变量的值并没有改变。

新增环境变量或修改环境变量内指定变量的当前值pm.environment.set("变量名", "值")

新增集合变量或修改集合变量内指定变量的当前值pm.collectionVariables.set("变量名", "值")

新增全局变量或修改全局变量内指定变量的当前值pm.globals.set("变量名", "值")

与 .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()之外,指定变量的范围,还可以解析对应范围内的变量:

只能解析动态变量pm.variables.replaceIn("{{变量名}}")

可以解析动态变量和环境变量pm.environment.replaceIn("{{变量名}}")

可以解析动态变量和集合变量pm.collectionVariables.replaceIn("{{变量名}}")

可以解析动态变量和全局变量pm.globals.replaceIn("{{变量名}}")

在数据变量不支持这个方法 举例:同时在字符串中引用环境变量、动态变量、全局变量。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()

这个方法返回一个对象,该对象包含指定范围内所有变量及其值。 根据变量的范围,这个方法可以分为以下几种:

返回所有变量pm.variables.toObject()

这个方法,返回的变量根据优先级顺序。 【优先级顺序: Global(全局变量)、Collection(集合变量)、Environment(环境变量)、Data(数据变量)、Local(局部变量)】运行后可以看到这个方法按顺序返回了所有变量。

返回环境变量中的所有变量pm.environment.toObject()

返回集合变量中的所有变量pm.collectionVariables.toObject()

返回全局变量中的所有变量pm.globals.toObject()

返回数据变量中的所有变量pm.iterationData.toObject()

举例:以pm.environment.toObject()为例,运行后可以看到这个方法返回了所有环境变量。

(6)删除指定变量

pm.*.unset("变量名")

这个方法可以删除指定范围内的指定变量。根据变量的范围,这个方法可以分为以下几种:

这个方法需要指定范围,所以pm.variables 不支持这个方法。从环境变量中删除指定变量pm.environment.unset("变量名")

从集合变量中删除指定变量pm.collectionVariables.unset("变量名")

从全局变量中删除指定变量pm.globals.unset("变量名")

从数据变量中删除指定变量pm.iterationData.unset("变量名")

举例:以pm.environment.unset(“变量名”)为例,删除环境变量"New_Environment"

运行脚本后,可以看到这个变量被删掉了

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

pm.*.clear()

这个方法可以清空指定范围内的所有。根据变量的范围,这个方法可以分为以下几种:

这个方法需要指定范围,所以pm.variables 不支持这个方法。清空环境变量pm.environment.clear()

清空集合变量pm.collectionVariables.clear()

清空全局变量pm.globals.clear()

清空数据变量pm.iterationData.clear()

举例:以pm.environment.clear()为例

运行之后可以看到,所有环境变量都被删除了

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

pm.iterationData.toJSON()

顾名思义,这个方法只提供给数据变量使用。

附录:postman系列文章目录

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

————————————————————————————————— postman系列文章内所使用的示例文件已经上传到了本人运营公众号【软件测试必备技能】 有需要可点击文章下发二维码,前往领取~

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: