数组筛选指定条件spId及匹配验证的Postman测试问题求助
Postman测试JSON数据筛选与匹配问题解决
需求说明
- 从给定JSON数组中获取所有
isNumber = true的spId - 从给定JSON数组中获取所有
isSpecial = true的spId - 将上述两类
spId与指定数组[1,2,3,4,5,23,34]进行匹配验证
提供的JSON数组
[ { "spId": "1", "isNumber": true, "isSpecial": true, "sportName": "Cricket", "ranking": 58, "eventnumbers": 666, "liveEventCount": 13 }, { "spId": "5", "isNumber": true, "isSpecial": false, "sportName": "hockey", "ranking": 59, "eventnumbers": 192, "liveEventCount": 15 }, { "spId": "2", "isNumber": false, "isSpecial": true, "sportName": "football", "ranking": 59, "eventnumbers": 60, "eventCount": 100 }, { "spId": "23", "isNumber": false, "isSpecial": false, "sportName": "VOLLEY", "ranking": 61, "eventnumbers": 42, "liveEventCount": 4 } ]
问题描述
使用以下Postman测试代码时,无法得到正确的计数结果:
var isNumber_expected= isNumber_sp_ids.length; pm.test(`There are ${isNumber_expected} number sports`, function () { pm.expect(sports.filter(sport => sport.isNumber).length).to.equal(isNumber_expected); });
解决方案
原代码存在两个核心问题:
- 未定义
isNumber_sp_ids变量,导致isNumber_expected取值错误 - 未处理
spId(字符串类型)与目标数组(数字类型)的类型差异,可能导致匹配验证失败
以下是修正后的完整测试代码:
// 1. 获取响应JSON数据与指定目标SpId数组 const sports = pm.response.json(); const targetSpIds = [1, 2, 3, 4, 5, 23, 34]; // 2. 处理isNumber=true的spId筛选与验证 const isNumberSpIds = sports .filter(sport => sport.isNumber === true) .map(sport => parseInt(sport.spId, 10)); // 转换为数字类型,统一匹配标准 pm.test("isNumber类型运动数量正确", () => { pm.expect(isNumberSpIds.length).to.equal(2); // 对应JSON中spId=1、5的两项 }); pm.test("所有isNumber的spId均匹配指定数组", () => { isNumberSpIds.forEach(id => { pm.expect(targetSpIds).to.include(id); }); }); // 3. 处理isSpecial=true的spId筛选与验证 const isSpecialSpIds = sports .filter(sport => sport.isSpecial === true) .map(sport => parseInt(sport.spId, 10)); pm.test("isSpecial类型运动数量正确", () => { pm.expect(isSpecialSpIds.length).to.equal(2); // 对应JSON中spId=1、2的两项 }); pm.test("所有isSpecial的spId均匹配指定数组", () => { isSpecialSpIds.forEach(id => { pm.expect(targetSpIds).to.include(id); }); });
代码说明
- 先从响应中解析JSON数据,明确指定目标数组
- 筛选时严格判断布尔值(
=== true)避免隐式类型转换问题 - 将
spId字符串转换为数字,确保与目标数组的类型一致,避免匹配错误 - 拆分数量验证与匹配验证,让测试逻辑更清晰
内容的提问来源于stack exchange,提问作者susan
相关产品推荐
相关产品推荐

