Assertion

Assertion узел - это узел, используемый для написания тестов. Каждый Assertion узел состоит из набора Assertion-ов - минимальных проверок различных утверждений. При запуске Assertion узла запускается проверка всех Assertion-ов. Если хотя бы одна проверка завершится с ошибкой, то выполнение всего Assertion узла завершается с ошибкой.

Assertion узел может быть создан только как потомок RequestStep узла. Причем RequestStep узел может имет не более одного Assertion узла в качестве потомка.

Создать Assertion узел можно следующими способами: из дерева проекта в контекстном меню RequestStep узла выбрать Add node -> Assertion. Либо в секции ответа RequestStep узла во вкладке Assertion выбрать + CREATE NEW ASSERTION NODE.

Создание Assertion узла из секции ответа RequestStep узла

В дереве проекта Assertion узел выглядит следующим образом:

Если запуск Assertion узла завершился успешно, то в дереве он принимает следующий вид:

В случае, если запуск Assertion узла завершился с ошибкой, узел выглядит так:

В дереве для данного типа узла доступны следующие пункты меню:

  • Remove node. Удалить узел.

  • Run. Запустить узел.

  • Show in explorer. Открыть папку с узлом в файловом менеджере.

Вкладка с Assertion узлом выглядит следующим образом:

Интерфейс вкладки Assertion узла

На скрине отмечены следующие области:

  1. Панель управления

  2. Панель настроек выбранного Assertion

  3. Список Assertion-ов

На панели управления расположены следующие кнопки

  • RUN - запуск списка Assertion-ов

  • FIX ERRORS - исправление ошибок Assertion-ов где это возможно. Данная кнопка активируется в случае, если есть ошибки в Assertion-ах. Функционал исправления ошибок описан в разделах Исправление ошибок каждого из Assertion-ов.

  • DISABLE ERRORS - выключение Assertion-ов, завершившихся с ошибкой. Отключенные Assertion-ы не будут участвовать в дальнейших запусках. Данная кнопка активируется в случае, если есть ошибки в Assertion-ах

  • + ADD ASSERTION - добавление Assertion в список

Ниже панели управления находится список Assertion-ов. Каждый элемент в данном списке выглядит следующим образом:

На скрине отмечены следующие области:

  1. Подсветка статуса. Если Assertion не запускался, то его цвет серый, если запуск завершился с ошибкой - красный, если успешно - зеленый.

  2. Иконка конкретного типа Assertion

  3. Краткое текстовое представление Assertion

  4. Удалить Assertion

  5. Задизейблить Assertion. При этом не будет участвовать в последующих запусках

  6. Запустить Assertion

  7. Исправить Assertion

Заметим, что контролы 4, 5, 6 и 7 появляются при наведении на Assertion.

Интерфейс панели настроек выбранного Assertion-а зависит от выбранного Assertion-а. В следующих разделах мы подробно разберем каждый из Assertion-ов

Файловое представление

Assertion узел хранится в файле <nodename>.yml, где <nodename> - название Assertion-а и имеет следующий формат:

{
"type": "object",
"properties": {
"type": {
"description": "Type of Assertion node",
"const": "Assertion",
"type": "string"
},
"assertions": {
"description": "List of assertions",
"type": "array",
"items": {
"$ref": "#/definitions/AbstractAssertion"
},
"default": []
},
"children": {
"description": "List of children names",
"type": "array",
"items": {
"type": "string"
},
"default": []
},
"variables": {
"$ref": "#/definitions/NodeVariables",
"description": "Node variables dictionary"
},
"name": {
"description": "Node name",
"type": "string"
}
},
"required": [
"assertions",
"children",
"name",
"type",
"variables"
],
"definitions": {
"AbstractAssertion": {
"oneOf": [
{
"$ref": "#/definitions/CompareAssertion"
},
{
"$ref": "#/definitions/ContainsAssertion"
},
{
"$ref": "#/definitions/XPathAssertion"
},
{
"$ref": "#/definitions/ScriptAssertion"
}
]
},
"CompareAssertion": {
"type": "object",
"properties": {
"type": {
"description": "Type of Compare assertion",
"const": "compare",
"type": "string"
},
"actualValue": {
"description": "Actual value",
"type": "string",
"default": "${$response.body}"
},
"operator": {
"$ref": "#/definitions/CompareOperator",
"description": "Operator",
"default": "equal"
},
"expectedValue": {
"description": "Expected value",
"type": "string"
},
"disabled": {
"type": "boolean",
"default": false
}
},
"required": [
"actualValue",
"disabled",
"expectedValue",
"operator",
"type"
]
},
"CompareOperator": {
"enum": [
"equal",
"greater",
"greater or equal",
"less",
"less or equal",
"not equal"
],
"type": "string"
},
"ContainsAssertion": {
"type": "object",
"properties": {
"type": {
"description": "Type of Contains assertion",
"const": "contains",
"type": "string"
},
"text": {
"description": "Text to be searched",
"type": "string",
"default": "${$response.body}"
},
"value": {
"description": "Value for search in text",
"type": "string"
},
"disabled": {
"type": "boolean",
"default": false
}
},
"required": [
"disabled",
"text",
"type",
"value"
]
},
"XPathAssertion": {
"type": "object",
"properties": {
"type": {
"description": "Type of Xpath assertion",
"const": "xpath",
"type": "string"
},
"text": {
"description": "Text to be searched",
"type": "string",
"default": "${$response.body}"
},
"path": {
"description": "XPath selector",
"type": "string"
},
"expectedValue": {
"description": "Expected value",
"type": "string"
},
"disabled": {
"type": "boolean",
"default": false
}
},
"required": [
"disabled",
"expectedValue",
"path",
"text",
"type"
]
},
"ScriptAssertion": {
"type": "object",
"properties": {
"type": {
"description": "Type of Script assertion",
"const": "script",
"type": "string"
},
"script": {
"description": "Assertion script",
"type": "string",
"default": "`function test(assertion, variables) {\n // It should return true if test is passed\n // return true;\n}`"
},
"disabled": {
"type": "boolean",
"default": false
}
},
"required": [
"disabled",
"script",
"type"
]
},
"NodeVariables": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}