我在Postman中使用一个测试脚本,根据从请求中收到的响应设置集合变量。以下是在Tests选项卡中为GET https://swapi.dev/api/species
请求编写的代码摘录:
// script to get species with average height > 100
const responseJson = pm.response.json();
const tallSpeciesCount = responseJson.results.filter(species => species.average_height > 100).length;
pm.collectionVariables.set("talls", tallSpeciesCount);
函数pm.collectionVariables.set()
仅设置talls
集合变量的当前值,而不是初始的值。后者保持空白。
带有"小故障"的备选方案
另一种选择是转到请求所属的集合,单击Variables选项卡。然后手动单击talls
变量行末尾出现的三个点,然后单击下拉菜单中的Persist选项。这种方法的一个问题是,它是手动的,需要GUI来更新变量的首选项。另一个更大的问题是,当响应结果为其他值时,初始值永远不会更新,因此与当前值不一致。
解释第二个问题的示例:
第一次发送请求时,如果响应结果为x
,则当前值设置为x
,但初始值保持为空。如果选择了"Persist"选项,则初始值也设置为x
(假定当前值为x
(。然而,当再次命中请求时,并且这一次如果响应返回值y
,则当前值被更新为y
,但是初始值仍然保持为x
。
因此,详细阐述的问题是如何在Postman中"以编程方式"设置初始值和当前值,以保持初始值与当前值一致
目前,您无法通过编程设置初始值,但您可以通过使用Postman API更新环境值来通过编程持久化初始值。参见";在运行之间保持变量";请参阅此代码示例。
要在基于集合的监视器中以编程方式持久化变量,或者在使用Newman时,您可以在集合中包含对Postman API的单独API调用,以更新存储变量的环境。