Bird
Raised Fist0
Postmantesting~15 mins

Status codes reading in Postman - Build an Automation Script

Choose your learning style10 modes available
Verify HTTP status codes for API responses
Preconditions (2)
Step 1: Send a GET request to the API endpoint https://jsonplaceholder.typicode.com/posts/1
Step 2: Observe the HTTP status code in the response
Step 3: Send a GET request to the API endpoint https://jsonplaceholder.typicode.com/posts/invalid
Step 4: Observe the HTTP status code in the response
✅ Expected Result: The first request returns status code 200 OK, the second request returns status code 404 Not Found
Automation Requirements - Postman Tests
Assertions Needed:
Verify response status code is 200 for valid request
Verify response status code is 404 for invalid request
Best Practices:
Use pm.response.to.have.status() for status code assertions
Write clear and descriptive test names
Keep tests independent and repeatable
Automated Solution
Postman
pm.test('Status code is 200 for valid post', () => {
    pm.response.to.have.status(200);
});

pm.sendRequest('https://jsonplaceholder.typicode.com/posts/invalid', (err, res) => {
    pm.test('Status code is 404 for invalid post', () => {
        pm.expect(res).to.have.property('code', 404);
    });
});

The first test checks that the response status code for a valid GET request is 200, which means OK.

The second test sends a request to an invalid URL and verifies the status code is 404, meaning Not Found.

Using pm.response.to.have.status() and pm.expect() ensures clear and reliable assertions.

Tests are independent and use Postman's built-in test functions for clarity.

Common Mistakes - 3 Pitfalls
Using incorrect assertion syntax like pm.response.status == 200
Not handling asynchronous requests properly in pm.sendRequest
Hardcoding URLs without verifying they exist
Bonus Challenge

Now add data-driven testing with 3 different API endpoints and verify their status codes

Show Hint

Practice

(1/5)
1. What does the status code 200 usually mean in Postman response testing?
easy
A. The request was successful and the server returned the expected data.
B. The requested resource was not found on the server.
C. The server encountered an internal error.
D. The client is not authorized to access the resource.

Solution

  1. Step 1: Understand HTTP status codes

    Status code 200 means OK, indicating success in HTTP responses.
  2. Step 2: Interpret 200 in Postman context

    In Postman, a 200 status means the request succeeded and data was returned.
  3. Final Answer:

    The request was successful and the server returned the expected data. -> Option A
  4. Quick Check:

    Status code 200 = Success [OK]
Hint: 200 means success, like a green light [OK]
Common Mistakes:
  • Confusing 200 with error codes like 404 or 500
  • Thinking 200 means unauthorized access
  • Assuming 200 means no data returned
2. Which of the following is the correct way to check for a 404 status code in a Postman test script?
easy
A. pm.test('Status is 404', () => pm.response.code === 404);"
B. pm.test('Status is 404', () => pm.response.code == 404);
C. pm.test('Status is 404', () => pm.response.code === 404);
D. pm.test('Status is 404', () => pm.response.code = 404);

Solution

  1. Step 1: Understand Postman test syntax

    Postman tests use pm.test with a callback function containing an assertion.
  2. Step 2: Use correct assertion method

    While pm.expect(pm.response.code).to.eql(404) is preferred, the direct comparison requires strict ===, proper arrow function syntax, and no extra characters or assignment operators.
  3. Final Answer:

    pm.test('Status is 404', () => pm.response.code === 404); -> Option C
  4. Quick Check:

    Use triple equals and arrow function in pm.test [OK]
Hint: Use arrow function and triple equals for status check [OK]
Common Mistakes:
  • Using single equals (=) instead of comparison
  • Missing arrow function syntax
  • Using double quotes inconsistently
3. Given this Postman test script:
pm.test('Check status', () => {
  pm.expect(pm.response.code).to.be.oneOf([200, 201]);
});

What will happen if the response status code is 201?
medium
A. The test will fail because 201 is not in the list.
B. The test will be skipped automatically.
C. The test will throw a syntax error.
D. The test will pass because 201 is included in the allowed codes.

Solution

  1. Step 1: Understand the oneOf assertion

    pm.expect(...).to.be.oneOf([200, 201]) passes if the response code matches any value in the array.
  2. Step 2: Check if 201 is in the array

    201 is included in [200, 201], so the assertion passes.
  3. Final Answer:

    The test will pass because 201 is included in the allowed codes. -> Option D
  4. Quick Check:

    201 in [200, 201] = pass [OK]
Hint: oneOf passes if code matches any listed status [OK]
Common Mistakes:
  • Thinking 201 is not allowed
  • Confusing oneOf with equals
  • Assuming syntax error from array
4. You wrote this Postman test:
pm.test('Status is 200', () => {
  pm.expect(pm.response.code = 200);
});

Why does this test always pass even if the response code is not 200?
medium
A. Because the single equals sign assigns 200 instead of comparing, so assertion is always true.
B. Because pm.response.code is read-only and cannot be changed.
C. Because Postman ignores the test function if syntax is wrong.
D. Because the test is missing a semicolon.

Solution

  1. Step 1: Identify the use of single equals in assertion

    The code uses pm.response.code = 200, which is assignment, not comparison.
  2. Step 2: Understand effect of assignment in assertion

    Assignment returns 200 (truthy), so pm.expect always receives a truthy value, making the test pass regardless of actual status.
  3. Final Answer:

    Because the single equals sign assigns 200 instead of comparing, so assertion is always true. -> Option A
  4. Quick Check:

    Use '===' for comparison, not '=' [OK]
Hint: Use triple equals (===) for comparison, not single equals (=) [OK]
Common Mistakes:
  • Confusing assignment (=) with comparison (===)
  • Ignoring that assignment returns a truthy value
  • Assuming syntax error instead of logic error
5. You want to write a Postman test that passes only if the response status code is between 200 and 299 inclusive. Which code snippet correctly implements this?
hard
A. pm.test('Status is 2xx', () => pm.expect(pm.response.code).to.equal(2));
B. pm.test('Status is 2xx', () => pm.expect(pm.response.code).to.be.within(200, 299));
C. pm.test('Status is 2xx', () => pm.expect(pm.response.code >= 200 && pm.response.code <= 299));
D. pm.test('Status is 2xx', () => pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 203, 204, 205]));

Solution

  1. Step 1: Identify the correct assertion for range check

    pm.expect(...).to.be.within(min, max) checks if value is between min and max inclusive.
  2. Step 2: Evaluate each option

    pm.test('Status is 2xx', () => pm.expect(pm.response.code).to.be.within(200, 299)); uses .within(200, 299) correctly. pm.test('Status is 2xx', () => pm.expect(pm.response.code).to.be.oneOf([200, 201, 202, 203, 204, 205])); lists only some codes, incomplete for full 2xx range. pm.test('Status is 2xx', () => pm.expect(pm.response.code >= 200 && pm.response.code <= 299)); uses invalid syntax inside pm.expect. pm.test('Status is 2xx', () => pm.expect(pm.response.code).to.equal(2)); checks for exact 2, which is wrong.
  3. Final Answer:

    pm.test('Status is 2xx', () => pm.expect(pm.response.code).to.be.within(200, 299)); -> Option B
  4. Quick Check:

    Use .within(200, 299) for range checks [OK]
Hint: Use .within(200, 299) to check 2xx status codes [OK]
Common Mistakes:
  • Listing all codes instead of using range
  • Using invalid boolean inside pm.expect
  • Checking for exact number 2 instead of range
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