Skip to main content

Assertions and Variable Extraction

Response Assertions

Validate that API responses match expected values. Add assertions to any step:

"responseAssertions": [
{
"type": "JSONPATH",
"expression": "$.status",
"operator": "EQUALS",
"expectedValue": "active"
}
]

Operators

OperatorDescriptionExample
EQUALSExact match$.role EQUALS "admin"
NOT_EQUALSNot equal$.status NOT_EQUALS "deleted"
CONTAINSString contains$.message CONTAINS "success"
EXISTSField exists (any value)$.id EXISTS
NOT_EXISTSField does not exist$.error NOT_EXISTS
GREATER_THANNumeric comparison$.count GREATER_THAN "0"
LESS_THANNumeric comparison$.responseTime LESS_THAN "500"

Multiple Assertions

Add multiple assertions to a single step — all must pass:

"responseAssertions": [
{"type": "JSONPATH", "expression": "$.id", "operator": "EXISTS", "expectedValue": ""},
{"type": "JSONPATH", "expression": "$.username", "operator": "EQUALS", "expectedValue": "john"},
{"type": "JSONPATH", "expression": "$.active", "operator": "EQUALS", "expectedValue": "true"},
{"type": "JSONPATH", "expression": "$.items.length()", "operator": "GREATER_THAN", "expectedValue": "0"}
]

Variable Extraction

Extract values from responses to use in subsequent steps:

"extractions": [
{
"variableName": "userId",
"extractionType": "JSONPATH",
"extractionExpression": "$.id",
"isRequired": true
}
]

Extraction Types

TypeDescriptionExpression Example
JSONPATHExtract from JSON body$.data.id, $.items[0].name
HEADERExtract from response headerLocation, X-Request-Id
REGEXExtract using regex pattern"id":(\d+)

Using Extracted Variables

Reference variables with {{variableName}} in subsequent steps:

{
"stepOrder": 2,
"name": "Get created user",
"httpMethod": "GET",
"endpointPath": "/api/users/{{userId}}",
"requestHeaders": {
"X-Trace-Id": "{{traceId}}"
}
}

Variables work in: endpoint paths, request bodies, headers, and query parameters.

Chaining Pattern

The typical CRUD test chain:

  1. Create → extract {{resourceId}}
  2. Read → use {{resourceId}}, assert fields match
  3. Update → use {{resourceId}}, send new values
  4. Verify → use {{resourceId}}, assert updated values
  5. Delete → use {{resourceId}}
  6. Confirm → use {{resourceId}}, expect 404