如何在Postman中从数组对象提取数值并验证其大于0?
Postman测试:验证接口返回数组对象中的数值大于0
问题场景
接口返回的JSON结构如下(键为数字字符串,值是包含嵌套数组的结构,嵌套数组第二个元素是需要验证的数值):
{"389": [["2021-04-30T00:00:00Z",16.130089309443093]],"390": [["2021-04-30T00:00:00Z",14.899161948201808]],"391": [["2021-04-30T00:00:00Z",17.495245579925736]],"392": [["2021-04-30T00:00:00Z",16.78176061001777]],"393": [["2021-04-30T00:00:00Z",25.473437964096448]],"394": [["2021-04-30T00:00:00Z",56.746358310562826]],"388": [["2021-04-30T00:00:00Z",18.49559245290604]]}
原测试代码无法遍历结构完成验证:
pm.test("Check performance > 0", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.greaterThan(0); });
解决方法
需要遍历JSON对象的所有键,逐层访问到嵌套数组中的数值并逐个验证。修改后的测试代码如下:
pm.test("Check all performance values are greater than 0", function () { var jsonData = pm.response.json(); // 遍历对象的每个键 Object.keys(jsonData).forEach(function(key) { // 获取当前键对应的嵌套数组 var nestedArray = jsonData[key][0]; // 提取需要验证的数值(嵌套数组第二个元素) var performanceValue = nestedArray[1]; // 验证数值大于0,添加键名提示方便定位问题 pm.expect(performanceValue).to.be.greaterThan(0, `Value for key ${key} is not greater than 0`); }); });
代码说明
Object.keys(jsonData):获取返回JSON对象的所有键(如"389""390"等)forEach:遍历每个键,逐个处理对应的值jsonData[key][0]:每个键对应的值是仅含一个嵌套数组的数组,取索引0的元素即可拿到目标嵌套数组nestedArray[1]:嵌套数组的第二个元素(索引1)就是需要验证的数值- 自定义提示信息,方便某个数值不满足条件时快速定位到对应键
内容的提问来源于stack exchange,提问作者B Ahern
相关产品推荐
相关产品推荐

