Postman tests中如何校验指定id对应的value值是否符合预期
你的现有写法是错误的,既不能实现你要的校验逻辑,本身的断言写法也存在严重问题。
现有写法的核心错误
- 响应结构处理错误:你的示例返回结果是数组类型,
pm.response.json()拿到的是包含两个对象的数组,没有顶层的id和value属性,你直接访问这两个属性拿到的都是undefined,根本获取不到目标值。 - 断言语法错误:
- 你在
pm.expect()里用了赋值运算符=,这行代码的作用是给对应属性赋值,不是做等值判断,本质上这个断言永远会通过,完全起不到校验作用 - Postman集成的Chai断言库要求必须调用对应的断言方法(比如
.to.equal())才会执行校验,你现有写法没有调用任何断言方法,属于无效断言。
- 你在
- 逻辑不匹配需求:你要实现的是「从数组中筛选出id=1的对象,校验该对象的value为1000」,你的现有写法是尝试校验响应顶层存在id=1、value=1000的属性,和需求逻辑完全不符。
正确实现代码
你可以用数组的find方法先定位到id=1的对象,再做断言,示例代码如下:
pm.test("校验id=1对应的value值为1000", function () { const res = pm.response.json(); // 定位id=1的对象 const target = res.find(item => item.id === 1); // 先断言存在id=1的记录,避免后续取值报错 pm.expect(target, "返回结果中不存在id=1的记录").to.be.an('object'); // 校验value值 pm.expect(target.value, "id=1的value值不符合预期").to.equal(1000); });
内容的提问来源于stack exchange,提问作者James Wilson
相关产品推荐
相关产品推荐

