无法将数组设置为环境变量-Postman测试
我试图在postman中将数组设置为环境变量。 但它存储数组的第一个值,而不是数组无法将数组设置为环境变量-Postman测试,postman,Postman,我试图在postman中将数组设置为环境变量。 但它存储数组的第一个值,而不是数组 var aDataEntry = postman.pm.environment.get('data_set_entries'); if(aDataEntry == null) { aDataEntry = []; } var jsonData = pm.response.json(); aDataEntry.push(jsonData.dataEntry.id); // a console.log he
var aDataEntry = postman.pm.environment.get('data_set_entries');
if(aDataEntry == null) {
aDataEntry = [];
}
var jsonData = pm.response.json();
aDataEntry.push(jsonData.dataEntry.id);
// a console.log here confirms that aDataEntry is an array
postman.pm.environment.set('data_entry',aDataEntry);
正如代码注释中提到的,变量是以数组的形式出现的,
但是,当我在第二次运行中再次获得环境变量时,它不是
类型为数组。但只包含数组中的第一个元素
var aDataEntry = postman.pm.environment.get('data_set_entries');
if(aDataEntry == null) {
aDataEntry = [];
}
var jsonData = pm.response.json();
aDataEntry.push(jsonData.dataEntry.id);
// a console.log here confirms that aDataEntry is an array
postman.pm.environment.set('data_entry',aDataEntry);
这里怎么了?
如何从postman环境变量设置数组并使用它。它看起来像是
pm.environment.set
调用toString
并设置值。
使用下面的代码来运行
var aDataEntry = pm.environment.get('data_set_entries');
if(aDataEntry == null) {
aDataEntry = [];
} else {
aDataEntry = JSON.parse(aDataEntry);
}
var jsonData = pm.response.json();
aDataEntry.push(jsonData.dataEntry.id);
// a console.log here confirms that aDataEntry is an array
pm.environment.set('data_entry',JSON.stringify(aDataEntry));
对于我的用例,数组中的值很简单,没有任何,
。
所以以上的工作方法对我来说很有效
编辑1:
如前所述,建议使用JSON.stringify()
和
JSON.parse()
用于存储复杂对象。相应地更新代码。Postman将所有集合/全局/环境变量存储为字符串,除非在设置环境变量时将值包装为类似于JSON.stringify()
。这是否回答了您的问题?我会用更新的语法替换诸如JSON.parse(responseBody)
、postman.getEnvironmentVariable
和postman.setEnvironmentVariable
之类的内容pm.response.json()
,pm.environment.get()
和pm.environment.set()
-旧的东西很快就会开始贬值。json.parse(aDataEntry)
只有在保存data\u set\u entries
环境变量时使用json.stringify(),类似这样:pm.environment.set('data\u set\u entries',JSON.stringify(dataSetEntries))
-对吗?