Validating Responses with Assertions
Assertions allow you to specify expected data in the response to a request made in a test run. When a test is run, the outcome is determined by whether or not all the assertions pass. If any assertion fails, the test fails. Assertions can be made against response header values, status code, response time/size, and content (like JSON or XML).
You can define zero or more assertions for any request in a test. The response data from the original request and the result of the last run are provided below the assertion editor for reference.
Each assertion consists of four items:
The location of the data to extract for comparison. Data can be extracted from HTTP header values and JSON, XML or text body content. You can also create assertions based on the response status code, time and size.
The property of the source data to retrieve. For HTTP headers, this is the name of the header. For XML and JSON content, see below. Unused for text content, status code, response time and response size.
The type of operation to perform when comparing the extracted data with the target value. For more information, see Comparisons.
The expected value used to compare against the actual value. The target value can contain a static value or a variable using the template syntax.
You can assert against data from JSON or XML:
- Asserting Against Data from JSON Body Content
- Asserting Against Data from XML Body Content
Data from an XML response body can be extracted by specifying the path of the data using XPath. In the 'Property' box of an assertion definition that uses 'XML Body' as the source, enter an XPath expression to locate the data to extract.
When an assertion is processed, the Actual Value consists of the data located by Source and Property. The Target Value is the value you entered into the assertion editor.
|The actual value exists and is an empty string or null.
|is not empty
|The actual value exists and is a value other than an empty string or null.
|A string comparison of the actual and expected value. Non-string values are cast to a string before comparing. For comparing non-integer numbers, use equals (number).
|does not equal
|A string comparison of the actual and target value.
|The actual value contains the target value as a substring.
|does not contain
|The target value is not found within the actual value.
|Checks for the existence of the expected value within a dictionary's keys. The actual value must point to a dictionary (JSON only).
|Checks a list or dictionary for the existence of the expected value in any of the list or dictionary values. The actual value must point to a JSON list or dictionary (JSON only).
|Checks that a value for a given JSON key is null.
|is a number
|Validates the actual value is (or can be cast to) a valid numeric value.
|Validates the actual value is (or can be cast to) a number less than the target value.
|less than or equal
|Validates the actual value is (or can be cast to) a number less than or equal to the target value.
|Validates the actual value is (or can be cast to) a number greater than the target value.
|greater than or equal
|Validates the actual value is (or can be cast to) a number greater than or equal to the target value.
|Validates the actual value is (or can be cast to) a number equal to the target value. This setting performs a numeric comparison: for example, "1.000" would be considered equal to "1".
More advanced assertions can be created by using Scripts.