Bird
Raised Fist0
Postmantesting~20 mins

Using Chai assertion library in Postman - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Chai Assertion Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
assertion
intermediate
2:00remaining
Identify the correct Chai assertion for checking response status
You want to verify that the HTTP response status code is exactly 200 using Chai in Postman tests. Which assertion is correct?
Postman
pm.test('Status code is 200', function () {
    pm.response.to.have.status(200);
});
Apm.expect(pm.response.code).to.equal(200);
Bpm.expect(pm.response.status).to.eql(200);
Cpm.expect(pm.response.statusCode).to.be(200);
Dpm.expect(pm.response.code).to.be.equalTo(200);
Attempts:
2 left
💡 Hint
Check the exact property name for status code in Postman response object.
Predict Output
intermediate
2:00remaining
What is the test result of this Chai assertion?
Given the response JSON body: {"success": true, "count": 5}, what will be the result of this test in Postman?
Postman
pm.test('Check success and count', function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.success).to.be.true;
    pm.expect(jsonData.count).to.be.above(3);
});
ATest fails because success is not a boolean.
BTest fails because count is not above 5.
CTest fails due to syntax error in assertion.
DTest passes because success is true and count is 5 which is above 3.
Attempts:
2 left
💡 Hint
Check the values in the JSON and the assertion conditions carefully.
locator
advanced
2:00remaining
Choose the best way to assert a nested JSON property exists
You receive this JSON response: {"user": {"id": 123, "profile": {"name": "Alice"}}}. Which Chai assertion correctly verifies that the 'name' property exists inside 'profile'?
Postman
var jsonData = pm.response.json();
Apm.expect(jsonData.user.profile).to.have.property('name');
Bpm.expect(jsonData.user['profile.name']).to.exist;
Cpm.expect(jsonData.user.profile.name).to.exist;
Dpm.expect(jsonData.user).to.have.property('profile.name');
Attempts:
2 left
💡 Hint
Check how to assert nested properties with Chai's 'property' method.
🔧 Debug
advanced
2:00remaining
Find the cause of this failing Chai assertion
This Postman test fails with an error: "TypeError: Cannot read property 'length' of undefined". What is the likely cause?
Postman
pm.test('Array length check', function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.items.length).to.be.above(0);
});
AThe 'length' property is not a valid Chai assertion.
BThe 'items' property is missing or undefined in the response JSON.
CThe 'to.be.above' method is used incorrectly.
DThe pm.response.json() method returns a string, not an object.
Attempts:
2 left
💡 Hint
Check if the property you access exists before using its attributes.
framework
expert
2:00remaining
Which Chai assertion style is used in Postman tests by default?
Postman supports multiple Chai assertion styles. Which style is the default and recommended for writing tests in Postman scripts?
AShould style (e.g., response.should.have.status(200))
BAssert style (e.g., assert.equal(response.status, 200))
CExpect style (e.g., expect(response.code).to.equal(200))
DVerify style (e.g., verify(response.status === 200))
Attempts:
2 left
💡 Hint
Look at common examples in Postman test scripts.

Practice

(1/5)
1. What is the main purpose of using the Chai assertion library in Postman tests?
easy
A. To create user interface elements
B. To write clear and readable checks for API responses
C. To send HTTP requests faster
D. To store environment variables

Solution

  1. Step 1: Understand Chai's role in testing

    Chai is used to write assertions that check if API responses meet expectations.
  2. Step 2: Identify the correct purpose in Postman context

    In Postman, Chai helps create readable tests that verify API behavior.
  3. Final Answer:

    To write clear and readable checks for API responses -> Option B
  4. Quick Check:

    Chai assertions = readable API checks [OK]
Hint: Chai is for checking API results clearly [OK]
Common Mistakes:
  • Confusing Chai with request sending
  • Thinking Chai creates UI elements
  • Mixing Chai with environment variable storage
2. Which of the following is the correct syntax to assert that the response status code is 200 using Chai in Postman?
easy
A. pm.expect(response.code).to.equal(200);
B. pm.expect(pm.response.status).to.equal(200);
C. pm.expect(pm.response.code).to.equal(200);
D. pm.expect(response.status).to.be(200);

Solution

  1. Step 1: Identify the correct Postman response object

    The response object in Postman is accessed via pm.response.
  2. Step 2: Use Chai syntax to check status code

    The correct Chai assertion is pm.expect(pm.response.code).to.equal(200);.
  3. Final Answer:

    pm.expect(pm.response.code).to.equal(200); -> Option C
  4. Quick Check:

    Status code check uses pm.response.code [OK]
Hint: Use pm.response.code with to.equal for status [OK]
Common Mistakes:
  • Using wrong object like response.code
  • Using to.be instead of to.equal
  • Missing pm.response prefix
3. Given this Postman test code:
pm.test('Check response body', () => {
  pm.expect(pm.response.text()).to.include('success');
});

What will happen if the response body is 'Operation was successful'?
medium
A. Test will pass only if response code is 200
B. Test will fail because 'success' is not exactly matched
C. Test will throw a syntax error
D. Test will pass because 'success' is included in the response

Solution

  1. Step 1: Understand the assertion used

    The assertion checks if the response text includes the substring 'success'.
  2. Step 2: Check if 'success' is in 'Operation was successful'

    The word 'successful' contains 'success' as a substring, so the assertion passes.
  3. Final Answer:

    Test will pass because 'success' is included in the response -> Option D
  4. Quick Check:

    Substring check includes 'success' [OK]
Hint: Include checks pass if substring exists anywhere [OK]
Common Mistakes:
  • Expecting exact match instead of substring
  • Confusing syntax error with assertion failure
  • Assuming status code affects this test
4. Identify the error in this Postman test code snippet:
pm.test('Status is 404', () => {
  pm.expect(pm.response.status).to.equal(404);
});
medium
A. pm.response.status is not the correct property for status code
B. to.equal should be to.be.equal
C. pm.test should be pm.expect
D. Missing semicolon after pm.test

Solution

  1. Step 1: Check the property used for status code

    The correct property for status code in Postman is pm.response.code, not pm.response.status.
  2. Step 2: Confirm Chai syntax correctness

    The to.equal syntax is correct and pm.test is used properly.
  3. Final Answer:

    pm.response.status is not the correct property for status code -> Option A
  4. Quick Check:

    Status code property is pm.response.code [OK]
Hint: Use pm.response.code for status, not pm.response.status [OK]
Common Mistakes:
  • Using pm.response.status instead of pm.response.code
  • Adding unnecessary 'to.be' in assertion
  • Confusing pm.test with pm.expect
5. You want to write a Postman test that asserts the JSON response has a property userId with a value greater than 100. Which code snippet correctly uses Chai assertions to do this?
hard
A. pm.test('userId > 100', () => { const jsonData = pm.response.json(); pm.expect(jsonData.userId).to.be.above(100); });
B. pm.test('userId > 100', () => { const jsonData = pm.response.json(); pm.expect(jsonData.userId).to.equal(100); });
C. pm.test('userId > 100', () => { pm.expect(pm.response.text()).to.include('userId > 100'); });
D. pm.test('userId > 100', () => { pm.expect(pm.response.code).to.be.above(100); });

Solution

  1. Step 1: Parse JSON response correctly

    Use pm.response.json() to get the response as an object.
  2. Step 2: Use Chai's 'above' assertion on userId property

    Check that jsonData.userId is greater than 100 with to.be.above(100).
  3. Final Answer:

    pm.test('userId > 100', () => { const jsonData = pm.response.json(); pm.expect(jsonData.userId).to.be.above(100); }); -> Option A
  4. Quick Check:

    Parse JSON then assert property above value [OK]
Hint: Parse JSON then use to.be.above for numeric checks [OK]
Common Mistakes:
  • Using to.equal instead of to.be.above
  • Checking response text instead of JSON property
  • Checking status code instead of userId