We check arrays in response bodies to make sure the data we get is correct and complete. This helps us trust the API works as expected.
Response body array assertions in Postman
pm.test("Test description", function () { let jsonData = pm.response.json(); pm.expect(jsonData.arrayName).to.be.an('array'); pm.expect(jsonData.arrayName).to.have.lengthOf(expectedLength); pm.expect(jsonData.arrayName).to.include(expectedValue); pm.expect(jsonData.arrayName[0]).to.have.property('propertyName'); });
Use pm.response.json() to parse the response body as JSON.
Use pm.expect() with Chai assertions to check array properties.
pm.test("Response has an array called users", function () { let jsonData = pm.response.json(); pm.expect(jsonData.users).to.be.an('array'); });
pm.test("Users array has 3 items", function () { let jsonData = pm.response.json(); pm.expect(jsonData.users).to.have.lengthOf(3); });
pm.test("Users array includes a user named 'Alice'", function () { let jsonData = pm.response.json(); let userNames = jsonData.users.map(user => user.name); pm.expect(userNames).to.include('Alice'); });
pm.test("First user has an 'id' property", function () { let jsonData = pm.response.json(); pm.expect(jsonData.users[0]).to.have.property('id'); });
This test checks that the response has an 'items' array with exactly 2 elements. It also verifies that one of the items is named 'Book' and that the first item has a 'price' property.
pm.test("Validate response body array assertions", function () { let jsonData = pm.response.json(); // Check 'items' is an array pm.expect(jsonData.items).to.be.an('array'); // Check array length is 2 pm.expect(jsonData.items).to.have.lengthOf(2); // Check array includes an item with name 'Book' let itemNames = jsonData.items.map(item => item.name); pm.expect(itemNames).to.include('Book'); // Check first item has 'price' property pm.expect(jsonData.items[0]).to.have.property('price'); });
Array assertions help catch errors early by confirming the structure and content of response data.
Common mistake: Forgetting to parse the response body as JSON before assertions.
Use array assertions when you expect multiple items, and use object assertions for single items.
Response body array assertions check if the API returns the correct list of items.
We verify array type, length, contents, and properties of items inside.
These checks help ensure the API data is reliable and complete.
Practice
Solution
Step 1: Understand the purpose of response body array assertions
These assertions verify the data returned by the API, especially when it should be a list or array of items.Step 2: Identify what is checked in the response body
We check if the response contains an array, its length, and the properties of each item to ensure data correctness.Final Answer:
If the API returns a list of items as expected -> Option AQuick Check:
Response body array assertions check list presence [OK]
- Confusing response time with response content
- Checking headers instead of body data
- Assuming URL format is part of body assertions
Solution
Step 1: Identify the correct method to parse JSON response
pm.response.json() parses the response body as JSON, which is needed to check if it is an array.Step 2: Use the correct Chai assertion syntax
to.be.an('array') correctly asserts the type is an array. Using pm.response.text() or wrong types will fail.Final Answer:
pm.test('Response is array', () => pm.expect(pm.response.json()).to.be.an('array')) -> Option CQuick Check:
Use pm.response.json() and to.be.an('array') [OK]
- Using pm.response.text() instead of json()
- Checking for 'string' instead of 'array'
- Using pm.response.body without parsing
[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"} ], what will this Postman test output? pm.test('Check length', () => {
const jsonData = pm.response.json();
pm.expect(jsonData.length).to.eql(3);
});Solution
Step 1: Parse the response and check array length
The response JSON is an array with 2 objects, so jsonData.length equals 2.Step 2: Compare expected length with actual length
The test expects length 3, but actual length is 2, so the assertion fails.Final Answer:
Test fails because length is 2 -> Option AQuick Check:
Array length is 2, expected 3, test fails [OK]
- Assuming length is 3 without counting items
- Expecting syntax error when code is correct
- Confusing length property with array content
pm.test('All items have id', () => {
const jsonData = pm.response.json();
jsonData.forEach(item => {
pm.expect(item.id).to.exist;
});
});Solution
Step 1: Check if jsonData is an array and forEach usage
pm.response.json() returns an array, so forEach is valid to iterate over items.Step 2: Validate assertion syntax for property existence
pm.expect(item.id).to.exist correctly asserts that the 'id' property exists on each item.Final Answer:
No error, the test is correct -> Option DQuick Check:
forEach and to.exist used correctly [OK]
- Thinking forEach can't be used on arrays
- Confusing to.exist with to.have.property
- Incorrect pm.expect syntax assumptions
status equal to active. Which Postman test code correctly does this?Solution
Step 1: Understand the requirement to find at least one item with status 'active'
The method some() returns true if any item matches the condition, which fits the requirement.Step 2: Analyze each option's logic
pm.test('Has active status', () => { const jsonData = pm.response.json(); pm.expect(jsonData.some(item => item.status === 'active')).to.be.true; }); uses some() and expects true, correctly asserting presence. pm.test('Has active status', () => { const jsonData = pm.response.json(); pm.expect(jsonData.every(item => item.status === 'active')).to.be.true; }); uses every(), which requires all items to be active. pm.test('Has active status', () => { const jsonData = pm.response.json(); pm.expect(jsonData.find(item => item.status === 'active')).to.be.undefined; }); expects find() result to be undefined, which means no active items. pm.test('Has active status', () => { const jsonData = pm.response.json(); pm.expect(jsonData.filter(item => item.status === 'active').length).to.eql(0); }); expects filter length to be 0, meaning no active items.Final Answer:
pm.test('Has active status', () => { const jsonData = pm.response.json(); pm.expect(jsonData.some(item => item.status === 'active')).to.be.true; }); -> Option BQuick Check:
Use some() to check at least one match [OK]
- Using every() which requires all items to match
- Checking for undefined instead of true
- Asserting zero length for presence check
Ready to prove it?
Pass the test and this pattern moves unknown
