Bird
Raised Fist0
Postmantesting~10 mins

Nested object assertions in Postman - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to assert the status code is 200.

Postman
pm.test('Status code is 200', function () { pm.response.to.have.status([1]); });
Drag options to blanks, or click blank then click option'
A200
B500
C404
D201
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong status code like 201 or 404.
Forgetting to put the status code inside the parentheses.
2fill in blank
medium

Complete the code to assert the response JSON has a nested property 'user.name'.

Postman
pm.test('Response has user name', function () { pm.expect(pm.response.json()).to.have.nested.property([1]); });
Drag options to blanks, or click blank then click option'
A'user.name'
B'username'
C'userName'
D'user-name'
Attempts:
3 left
💡 Hint
Common Mistakes
Using camelCase or hyphen instead of dot notation.
Not putting the property name inside quotes.
3fill in blank
hard

Fix the error in the assertion to check that 'data.items[0].id' equals 123.

Postman
pm.test('First item id is 123', function () { pm.expect(pm.response.json()).to.have.nested.property('data.items[0].id', [1]); });
Drag options to blanks, or click blank then click option'
A'123'
B123
C"123"
D'id'
Attempts:
3 left
💡 Hint
Common Mistakes
Using quotes around 123 making it a string.
Using the property name instead of the expected value.
4fill in blank
hard

Fill both blanks to assert the nested property 'profile.address.city' equals 'New York'.

Postman
pm.test('City is New York', function () { pm.expect(pm.response.json()).to.have.nested.property([1], [2]); });
Drag options to blanks, or click blank then click option'
A'profile.address.city'
B'New York'
C'Los Angeles'
D'profile.city'
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect nested path like 'profile.city'.
Using wrong city name or missing quotes.
5fill in blank
hard

Fill all three blanks to assert the nested property 'order.items[1].price' is greater than 20.

Postman
pm.test('Second item price check', function () { pm.expect(pm.response.json()).to.have.nested.property([1]); pm.expect(pm.response.json().order.items[1].price).to.be.[2]([3]); });
Drag options to blanks, or click blank then click option'
A'order.items[1].price'
Babove
C20
Dequal
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'equal' instead of 'above' for greater than check.
Not using quotes for the nested property path.
Using string '20' instead of number 20.

Practice

(1/5)
1. In Postman, how do you access a nested property user.name in a JSON response for assertion?
easy
A. Use pm.expect(jsonData.user[name]) to access nested property.
B. Use pm.expect(jsonData.user.name) to assert the nested value.
C. Use pm.expect(jsonData['user-name']) to access nested property.
D. Use pm.expect(jsonData.user-name) to access nested property.

Solution

  1. Step 1: Understand JSON nested property access

    In JavaScript, nested properties are accessed using dot notation like object.property.
  2. Step 2: Apply correct syntax in Postman test

    To assert user.name, use pm.expect(jsonData.user.name) which correctly accesses the nested value.
  3. Final Answer:

    Use pm.expect(jsonData.user.name) to assert the nested value. -> Option B
  4. Quick Check:

    Dot notation = pm.expect(jsonData.user.name) [OK]
Hint: Use dot notation for nested JSON properties in assertions [OK]
Common Mistakes:
  • Using brackets incorrectly for nested keys
  • Using hyphens instead of dots for nested access
  • Missing quotes around string keys in bracket notation
2. Which of the following is the correct syntax to assert that response.body.data.user.age equals 30 in Postman?
easy
A. pm.test('Age is 30', () => { pm.expect(response.body.data.user.age).to.eql(30); });
B. pm.test('Age is 30', () => { pm.expect(response.body.data.user.age).to.equal('30'); });
C. pm.test('Age is 30', () => { pm.expect(response.body.data.user.age).to.be('30'); });
D. pm.test('Age is 30', () => { pm.expect(response.body.data.user.age).equals(30); });

Solution

  1. Step 1: Identify correct assertion method

    Postman uses Chai assertion library where to.eql(value) checks deep equality including numbers.
  2. Step 2: Check syntax correctness

    pm.test('Age is 30', () => { pm.expect(response.body.data.user.age).to.eql(30); }); uses to.eql(30) with correct arrow function and property access, matching expected number type.
  3. Final Answer:

    pm.test('Age is 30', () => { pm.expect(response.body.data.user.age).to.eql(30); }); -> Option A
  4. Quick Check:

    Use to.eql for value equality in Postman tests [OK]
Hint: Use to.eql() for exact value matching in Postman assertions [OK]
Common Mistakes:
  • Using string '30' instead of number 30
  • Using incorrect assertion methods like to.be()
  • Missing arrow function syntax in pm.test
3. Given the JSON response:
{"order": {"id": 101, "items": [{"name": "Pen", "qty": 3}, {"name": "Book", "qty": 2}]}}

What will this Postman test output?
pm.test('Check first item qty', () => {
  const jsonData = pm.response.json();
  pm.expect(jsonData.order.items[0].qty).to.eql(3);
});
medium
A. Test will pass because first item's qty is 3.
B. Test will fail because qty is 2 for first item.
C. Test will throw an error due to wrong index access.
D. Test will fail because items is not an array.

Solution

  1. Step 1: Analyze JSON structure and access

    The JSON has an array items with first element having qty: 3.
  2. Step 2: Check assertion correctness

    The test accesses items[0].qty and asserts it equals 3, which matches the JSON data.
  3. Final Answer:

    Test will pass because first item's qty is 3. -> Option A
  4. Quick Check:

    Array index 0 qty = 3 matches assertion [OK]
Hint: Check array index and property value carefully in nested assertions [OK]
Common Mistakes:
  • Confusing array index starting at 1 instead of 0
  • Assuming items is an object, not an array
  • Misreading qty values in nested objects
4. You wrote this Postman test:
pm.test('Check user city', () => {
  const jsonData = pm.response.json();
  pm.expect(jsonData.user.address.city).to.eql('New York');
});

But the test fails with error: TypeError: Cannot read property 'city' of undefined. What is the likely cause?
medium
A. The assertion method to.eql is incorrect for strings.
B. The city value is misspelled in the assertion.
C. The JSON response is not parsed correctly with pm.response.json().
D. The address property is missing or undefined in user.

Solution

  1. Step 1: Understand the error message

    The error says Cannot read property 'city' of undefined, meaning address is undefined.
  2. Step 2: Identify cause in nested access

    If jsonData.user.address is missing, trying to access .city causes this error.
  3. Final Answer:

    The address property is missing or undefined in user. -> Option D
  4. Quick Check:

    Undefined parent property causes TypeError in nested access [OK]
Hint: Check if all parent nested objects exist before accessing child [OK]
Common Mistakes:
  • Assuming all nested keys always exist
  • Ignoring error message details
  • Blaming assertion method instead of data structure
5. You receive this JSON response:
{"users": [{"id": 1, "profile": {"name": "Alice", "active": true}}, {"id": 2, "profile": {"name": "Bob", "active": false}}]}

Write a Postman test to assert that all users have a profile.active property set to true. Which code snippet correctly performs this nested object assertion?
hard
A. pm.test('All users active', () => { const users = pm.response.json().users; pm.expect(users[0].every(user => user.profile.active)).to.eql(true); });
B. pm.test('All users active', () => { const users = pm.response.json().users; pm.expect(users.profile.active).to.eql(true); });
C. pm.test('All users active', () => { const users = pm.response.json().users; users.forEach(user => { pm.expect(user.profile.active).to.eql(true); }); });
D. pm.test('All users active', () => { const users = pm.response.json().users; users.map(user => pm.expect(user.profile).to.eql(true)); });

Solution

  1. Step 1: Understand requirement to check all users' active status

    We must assert each user's profile.active is true.
  2. Step 2: Evaluate each option's approach

    pm.test('All users active', () => { const users = pm.response.json().users; users.forEach(user => { pm.expect(user.profile.active).to.eql(true); }); }); loops over users and asserts each profile.active equals true, which is correct and clear.
    pm.test('All users active', () => { const users = pm.response.json().users; pm.expect(users.profile.active).to.eql(true); }); wrongly tries to access users.profile.active which is invalid.
    pm.test('All users active', () => { const users = pm.response.json().users; pm.expect(users[0].every(user => user.profile.active)).to.eql(true); }); wrongly calls every() on users[0] (an object), causing TypeError as objects have no every method.
    pm.test('All users active', () => { const users = pm.response.json().users; users.map(user => pm.expect(user.profile).to.eql(true)); }); asserts user.profile equals true, but profile is an object not equal to true and misses .active.
  3. Final Answer:

    Use forEach loop to assert each user's profile.active is true. -> Option C
  4. Quick Check:

    Loop and assert each nested property for all items [OK]
Hint: Use forEach to assert nested properties on all array items [OK]
Common Mistakes:
  • Accessing nested property on array directly
  • Calling array methods like every() on single objects
  • Asserting entire object equals true instead of its boolean property
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard