Default and conditional responses help you check if your API sends the right reply based on different situations. This makes sure your app works well for all users.
Default and conditional responses in Postman
Start learning this pattern below
Jump into concepts and practice - no test required
// Example of conditional test in Postman pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); if (pm.response.code === 200) { // test for success response pm.test("Response has success message", function () { pm.expect(pm.response.json().message).to.eql("Success"); }); } else { // test for error response pm.test("Response has error message", function () { pm.expect(pm.response.json().error).to.exist; }); }
Use pm.response.code to check the HTTP status code.
Use pm.test() to create test cases that pass or fail.
pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
if (pm.response.code === 404) { pm.test("Not Found error returned", function () { pm.expect(pm.response.json().error).to.eql("Not Found"); }); }
pm.test("Default response check", function () { pm.expect(pm.response.code).to.be.oneOf([200, 400, 404]); });
This script tests if the response status is either 200 or 400. If 200, it checks for a success message. If 400, it checks for an error message. Otherwise, it fails the test with a message.
// Sample Postman test script for default and conditional responses pm.test("Response status is 200 or 400", function () { pm.expect(pm.response.code).to.be.oneOf([200, 400]); }); if (pm.response.code === 200) { pm.test("Success message is correct", function () { pm.expect(pm.response.json().message).to.eql("Operation completed successfully"); }); } else if (pm.response.code === 400) { pm.test("Error message is present", function () { pm.expect(pm.response.json().error).to.exist; }); } else { pm.test("Unexpected status code", function () { pm.expect.fail("Received unexpected status code: " + pm.response.code); }); }
Always check for both expected success and error responses to cover all cases.
Use clear and descriptive test names to understand test results easily.
Conditional tests help you handle different API behaviors in one script.
Default and conditional responses let you test different API replies in one place.
Use pm.test() and if conditions to check various outcomes.
This helps catch errors early and improves your API reliability.
Practice
Solution
Step 1: Understand the role of conditional responses
Conditional responses allow testing different API replies based on conditions in one place.Step 2: Identify the main purpose
This helps verify various outcomes without writing separate tests for each response.Final Answer:
To check different API responses in one test script -> Option CQuick Check:
Default and conditional responses = test multiple replies [OK]
- Confusing response testing with sending requests
- Assuming it changes API endpoints
- Mixing testing with documentation generation
Solution
Step 1: Review Postman test syntax
Postman uses pm.test with a callback function and pm.expect for assertions.Step 2: Identify correct assertion for status code
pm.expect(pm.response.code).to.equal(200) correctly asserts status code equals 200.Final Answer:
pm.test('Status is 200', () => { pm.expect(pm.response.code).to.equal(200); }); -> Option BQuick Check:
pm.expect with .to.equal(200) = correct syntax [OK]
- Using '==' instead of .to.equal() in assertions
- Checking pm.response.status instead of pm.response.code
- Not calling pm.expect properly inside pm.test
pm.test('Check response', () => {
if (pm.response.code === 200) {
pm.expect(pm.response.json().success).to.be.true;
} else {
pm.expect(pm.response.code).to.equal(404);
}
});Solution
Step 1: Analyze the if-else condition with status 404
Status 404 triggers the else block which asserts pm.response.code equals 404.Step 2: Check assertion in else block
pm.expect(pm.response.code).to.equal(404) will pass since status is 404.Final Answer:
Test passes because status is 404 and matches else condition -> Option AQuick Check:
404 status triggers else assertion = pass [OK]
- Assuming test fails due to missing success property
- Thinking JSON parsing fails on 404
- Ignoring else block assertions
pm.test('Status check', () => {
if (pm.response.code = 201) {
pm.expect(pm.response.code).to.equal(201);
} else if (pm.response.code = 400) {
pm.expect(pm.response.json().error).to.exist;
}
});Solution
Step 1: Check if condition syntax
The code uses '=' which assigns value instead of '===' for comparison.Step 2: Understand impact of assignment in conditions
Assignment always returns true, causing logic errors and wrong test behavior.Final Answer:
Using assignment '=' instead of comparison '===' in if conditions -> Option DQuick Check:
Use '===' for comparisons, not '=' [OK]
- Confusing '=' with '==' or '==='
- Ignoring that assignment returns a value
- Not validating all possible status codes
Solution
Step 1: Check correct use of comparison operators
pm.test('Conditional response test', () => { if (pm.response.code === 200) { pm.expect(pm.response.json().data).to.exist; } else if (pm.response.code === 404) { pm.expect(pm.response.json().error).to.exist; } else { pm.expect.fail('Unexpected status code'); } }); uses '===' for comparisons correctly. Using '=' causes assignment instead of comparison.Step 2: Verify conditional logic and assertions
The code checks 'data' field existence for status 200, 'error' for 404, and explicitly fails for unexpected codes using pm.expect.fail().Step 3: Evaluate other options
One option incorrectly combines status and field checks in single pm.expect statements, causing failures. Another does not condition on status codes at all.Final Answer:
pm.test('Conditional response test', () => { if (pm.response.code === 200) { pm.expect(pm.response.json().data).to.exist; } else if (pm.response.code === 404) { pm.expect(pm.response.json().error).to.exist; } else { pm.expect.fail('Unexpected status code'); } }); -> Option AQuick Check:
Use if-else with '===' and proper assertions [OK]
- Using '=' instead of '===' in conditions
- Combining conditions inside one pm.expect
- Not handling unexpected status codes
