Bird
Raised Fist0
Postmantesting~5 mins

Nested object assertions in Postman - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a nested object assertion in Postman tests?
It is a way to check values inside objects that are inside other objects in the response JSON. This helps verify deep data structures.
Click to reveal answer
beginner
How do you access a nested property in Postman test scripts?
Use dot notation like response.data.user.name or bracket notation like response['data']['user']['name'].
Click to reveal answer
beginner
Example: How to assert that response.data.user.age equals 30 in Postman?
Use pm.expect(response.data.user.age).to.eql(30); inside the test script.
Click to reveal answer
intermediate
Why is it important to check nested objects in API testing?
Because APIs often return complex data. Checking nested objects ensures all parts of the response are correct, not just the top level.
Click to reveal answer
intermediate
What happens if you try to assert a nested property that does not exist in Postman?
The test will fail with an error or undefined value. It's good to check if the property exists before asserting.
Click to reveal answer
In Postman, how do you assert that response.user.address.city equals 'Paris'?
Apm.expect(response.user.address.city).to.eql('Paris');
BBoth A and B
Cpm.expect(response['user']['address']['city']).to.eql('Paris');
Dpm.assert(response.user.address.city == 'Paris');
What does pm.expect(response.data.items[0].id).to.exist; check?
AThat the first item has an id property
BThat the id equals zero
CThat items array is empty
DThat response.data is undefined
If response.data.user is undefined, what happens when you try pm.expect(response.data.user.name).to.eql('John');?
ATest fails with an error
BTest passes
CTest ignores the assertion
DTest logs a warning but passes
Which method helps avoid errors when asserting nested properties that might not exist?
AUsing try-catch blocks in Postman tests
BIgnoring errors
CBoth C and D
DUsing optional chaining like response?.data?.user?.name
What is the best practice for asserting nested objects in Postman?
AAssert only top-level properties
BAvoid nested assertions
CAssert nested properties directly without checks
DCheck existence before asserting nested properties
Explain how to write assertions for nested objects in Postman test scripts.
Think about how you access deep data in JavaScript objects.
You got /4 concepts.
    Describe common errors when asserting nested objects and how to prevent them in Postman.
    Consider what happens if a nested object is missing.
    You got /4 concepts.

      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