Applies to ReadyAPI 2.4, last modified on June 7, 2018

Assertions are validation rules applied to test results that check how your target web service performs. In SoapUI tests, you use assertions to verify response codes, response headers, individual values in response bodies, request execution time and to do other checks. The test runner runs assertions after a test step (request) is over.

Example 1 – SLA Assertion

Let’s create an assertion that will check if the tested web service responds within a predefined time limit:

  1. In SoapUI, select GET Request in the Navigator panel and switch to the Assertions page:

    Validating results of functional web service tests: Select a request

    Click the image to enlarge it.

  2. In the Assertions page, click one of the Add Assertion buttons:

    Validating results of functional web service tests: Create an assertion

    Click the image to enlarge it.

    This will invoke the Add Assertion dialog.

  3. In the dialog, select the SLA category on the left and then Response SLA on the right, and click Add:

    Validating results of functional web service tests: The Add Assertion dialog

    Click the image to enlarge it.

    Note: SLA stands for service-level agreement. This term typically means the maximum time it takes for an operation to execution. Of course, this time should be acceptable for users.
  4. After you click Add in the Add Assertion dialog, ReadyAPI displays the dialog box where you can configure assertion parameters. This dialog box looks differently for different assertions. The image below shows how it looks for the Response SLA assertion.

    Let’s use 1000 milliseconds as the maximum allowed response time for our request. Enter 1000 and click OK:

    Validating results of functional web service tests: Set assertion parameters

    Now, if the request takes longer than the specified number of milliseconds to complete, the assertion will trigger, and the test will fail. If the execution time less than or equal to the specified value, the check will pass.

If the request editor has response data, the assertion will be applied immediately. This is what we have in our case – we ran the request earlier and have some response by now:

Assertions in functional web service tests

ReadyAPI will re-apply assertion every time it gets fresher response data.

As you can see, in our case, the assertion failed because the request executed for longer time than 1 second. To change the time limit, double-click the assertion in the Assertions page and enter a larger value in the subsequent dialog:

Change assertion properties

Example 2 – Check Response Contents

Let’s now see how you can verify response data. The sample response body has JSON data format, so we will create an assertion for JSON data:

  1. In the Assertions page, click to create another assertion.

    In the subsequent dialog, select the Property Content category on the left and the JsonPath Match assertion on the right and click Add:

    Functional testing of web services: Create an assertion

    Click the image to enlarge it.

    This will invoke the assertion properties dialog.

  2. In the dialog, you need to enter a JSONPath expression that will extract some field from the response body and the expected value of this field:

    Proeprties of an assertion that verifies JSON responses

    You can either type the desired expression, or click Select node on the toolbar and pick a value visually in the subsequent dialog. Let’s do this. Click , select the name field of the first array item in the following dialog and click OK:

    Functional testing of web services: Select a value from a JSON response

    Click the image to enlarge it.

    The JSONPath Expression field now contains the selector and Expected Result contains the value extracted from the current response data:

    Functional testing of web services: JSONPath expression
  3. Click Save to store the changes.

    Since we have response data, the assertion will be applied immediately and you will see its results in the Assertions page:

    Assertion results

    Click the image to enlarge it.

    Now, if the response changes, the assertion will trigger and the test step will fail.

We would like to note once again that the described Select node command works only if the editor has some response data. That is, you need to run the request first and receive a response. In our case it works, because we ran the request on the previous step of the tutorial.

Prev     Next

See Also

Creating Your First Functional Test
About Assertions

Highlight search results