如何在POSTMAN测试失败时获取console.log 分期值低于100无日志问题
问题核心原因
- 断言机制问题:
pm.expect基于Chai断言库实现,只要断言条件不满足就会直接抛出异常、终止当前测试函数执行,不会返回布尔值,因此你的if/else if分支逻辑完全无法按预期运行。低于100的场景下pm.expect(xxx).to.be.above(100)会直接抛出错误,根本走不到后续的else if分支,自然不会输出日志。 - 循环变量闭包问题:你用
var声明的循环变量i和j存在变量提升,异步执行的pm.test函数运行时,循环已经执行完毕,i和j的值都是循环结束后的最终值,就算日志能正常输出也会指向错误的数组下标。
修复方案
var jsonData = JSON.parse(responseBody) // 用let声明循环变量解决闭包问题 for (let i = 0; i < jsonData.length; i++) { for(let j = 0; j < jsonData[i].products.length; j++) { // 给测试用例加下标区分不同商品的校验,避免所有用例重名 pm.test(`第${i+1}组第${j+1}个商品Installment > 100`, function() { // 提前取值避免重复访问 const installment = jsonData[i].products[j].installment // 先做普通值判断,不会抛出异常 if (installment > 100) { // 符合条件直接走断言通过逻辑 pm.expect(installment).to.be.above(100) } else { // 不符合条件先打印需要的日志,再主动触发断言失败 console.log('不符合要求的商品所属ID:', jsonData[i].id, '对应installment值:', installment) pm.expect.fail(`installment值为${installment},低于100,校验失败`) } }); } }
内容的提问来源于stack exchange,提问作者Uncle_Moris
相关产品推荐
相关产品推荐

