Postman断言数组属性时出现Assertion Error的解决求助
问题修复方案
问题根源
你的JSON结构中,外层courses是一个对象数组,而你要断言的是数组中对象内部的courses字段(即["java", "selenium"])。原脚本直接访问jsonData.courses,拿到的是外层的对象数组(内容为[{id:1, name:"John", ...}]),并非目标字符串数组,因此断言时会触发undefined相关错误。
修复后的测试脚本
直接定位到目标数组即可,由于外层courses数组仅包含一个元素,通过索引[0]获取对象后再访问内部的courses字段:
var jsonData = pm.response.json(); pm.test("Test array properties", () => { // 定位到对象内部的courses数组 const targetCourses = jsonData.courses[0].courses; pm.expect(targetCourses).to.include("java"); pm.expect(targetCourses).to.have.members(["java", "selenium"]); });
补充说明
如果外层courses数组可能包含多个对象,可根据业务逻辑匹配目标对象(比如通过id或name筛选),示例如下:
var jsonData = pm.response.json(); pm.test("Test array properties for John", () => { // 找到name为John的对象 const johnCourse = jsonData.courses.find(item => item.name === "John"); pm.expect(johnCourse.courses).to.include("java"); pm.expect(johnCourse.courses).to.have.members(["java", "selenium"]); });
内容的提问来源于stack exchange,提问作者Subhasish
相关产品推荐
相关产品推荐

