Assertions
Strict Mode Payload Comparison

Introduction

Strict mode Payload comparison makes strict comparison of the expected payload with the actual response payload.

The default mode of comparison is LENIENT i.e. the actual response can have more properties than the expected payload and the test will still pass.

In STRICT mode, the response is not allowed to have extra properties as compared to the expected payload. It should always find EXACT match else the test will fail.

Strict comparison DSL flag

To use STRICT comparison you just need to add the flag verifyMode to the test case

For example, if we have an GET API /api/v1/search/persons which returns the Http status as 200 and the below response payload,

payLoad:
{
   "applicationId": "P010203"
   "visaType": "Tier2"
}

then we can write the automation Test-case as below.

---
scenarioName: Validate a GET API
steps:
-     
  ...
  verifyMode: STRICT
  verify:
    body: 
       applicationId:P010203
       visaType: Tier2
      

Using STRICT mode for Payload verification

The test will pass only if the actual response exactly contains the expected fields, if there are extra properties in the actual response, then you will receive the following message:

Assertion jsonPath [extra property name]' with actual value 'Unexpected: [extra property name]' did not match the expected value

Using LENIENT mode for Payload verification

The test will pass even if the actual response contains the expected fields plus any extra fields.

---
scenarioName: Validate a GET API
steps:
-     
  ...
  verifyMode: LENIENT
  verify:
    body: 
       visaType: Tier2
      

If there are no properties in the actual response matching the expected response, then you will receive the following message:

Assertion jsonPath [property name] with actual value '[property name]' did not match the expected value '[property name]'

Conclusion

STRICT mode can be very useful in testing use cases where the application wants to restrict the response only to the expected fields both qualitatively as well as quantitatively.

LENIENT mode can be very useful in testing use cases where the application wants to verify the expected response only but not concerned about the extra fields present in the actual response.