TestMace
Search…
RequestStep
RequestStep узел - это узел для отправки HTTP-запросов. Наш инструмент позволяет гибко сконфигурировать запрос и использовать его как отдельно, так и в составе сценария.

Представление RequestStep узла в дереве проекта

Для создания RequestStep узла необходимо в контекстном меню Folder узла или Project узла выбрать пункт Add node -> RequestStep.
В дереве проекта RequestStep узел выглядит следующим образом
Вид RequestStep узла в дереве
Остановимся на узле поподробнее. Цвет левого верхнего кружка указывает на статус HTTP-запроса: серый - если запрос не выполнялся, зеленый - в случае успешного HTTP-кода (например, 200, 201 и т.д.), красный - в случае неудачного HTTP-кода (например, 404, 500 и т.д.). Цвет иконки листочка указывает на статус выполнения дочернего Assertion узла: серый - если запуск не выполнялся, зеленый - в случае если после запуска, Assertion узел либо отсутствует, либо существует и его выполнение завершилось успешно, красный - в случае, если выполнение Assertion узла завершилось с ошибкой (не все проверки были пройдены).
В дереве для данного типа узла доступны следующие пункты меню:
Контекстное меню для RequestStep узла
  • Add node. Добавление узла-потомка. В подменю можно выбрать тип узла.
  • Rename. Переименовать узел.
  • Duplicate. Сделать копию узла. Новый узел будет иметь название NodeName [Copy [number]].
  • Remove node. Удалить узел.
  • Run. Запустить узел.
  • Share. Поделиться узлом. При это в буфере обмена создается ссылка, которая содержит всю информацию о текущем узле.
  • Show in explorer. Открыть папку с узлом в файловом менеджере.

Описание вкладки RequestStep узла

При создании RequestStep узла (или при двойном клике по уже существующему) открывается вкладка данного узла. Выглядит она следующим образом:
Вкладка RequestStep узла
Рассмотрим подробнее каждую из частей интерфейса.

Секция конфигурирования запроса

Верхняя часть запроса выглядит следующим образом:
Верхняя часть запроса
На скрине выше отмечены следующие пункты
  1. 1.
    Метод запроса. На данный момент поддерживаются следующие методы:
    • GET — получение ресурса
    • POST — создание ресурса
    • PUT — обновление ресурса
    • DELETE — удаление ресурса
    • PATCH — для частичного изменения ресурса
    • OPTIONS — для описания параметров соединения с ресурсом
  2. 2.
    Поле для URL.
  3. 3.
    Кнопка для запуска запроса
Ниже представлена панель редактирования заголовков, query параметров, авторизации и тела запроса. Так выглядит данная панель для POST запросов:
Панель редактирования параметров запроса
Данная панель организована в виде вкладок. На данный момент существуют следующие вкладки:
  • Headers - для редактирования списка HTTP-заголовков
  • Query parameters - для редактирования списка query параметров
  • Body - для конфигурирования тела запроса
  • Authorization - для конфигурирования авторизаций.
  • Other - конфигурирование прочих параметров запроса
Вкладки Headers и Query parameters с точки зрения интерфейса очень похожи - это обычные таблицы с возможностью массового редактирования и отключением строк. Отдельно стоит добавить, что заголовки поддерживают механизм установки HTTP-заголовков по умолчанию.
Вкладка Other выглядит следующим образом:
На данный момент можно отредактировать параметр Requires SSL certificates be valid - проверять валидность SSL-сертификата узла. Параметр по умолчанию: Inherit, наследует значение родителя узла, если у родителя задан Inherit, параметр выключен. Возможные варианты:
  • Yes — да
  • No — нет
  • Inherit — наследовать
Отдельно остановимся на вкладке Body, которая выглядит следующим образом:
Вкладка Body
В выпадающем списке можно выбрать тип тела. На данный момент поддерживаются следующие типы
  • JSON - для отправки JSON данных. Сами данные редактируются в текстовом поле с подсветкой JSON-синтаксиса и с поддержкой механизма переменных . При отправке запроса в список HTTP-заголовков добавляется заголовок Content-Type со значением application/json .
  • Form data - для редактирования multipart/form-data форм. Имеет табличный вид с возможностью массового редактирования . В строках таблицы в качестве значения могут выступать как обычные строки, так и ссылки на файлы.
  • Form URL encoded - для редактирования application/x-www-form-urlencoded форм. Имеет табличный вид с возможностью массового редактирования .
  • File - для отправки в теле содержимое файла.
  • XML - для отправки XML данных. Сами данные редактируются в текстовом поле с подсветкой XML-синтаксиса и с поддержкой механизма переменных . При отправке запроса в список HTTP-заголовков добавляется заголовок Content-Type со значением application/xml .
  • Text - для отправки текстовых данных. Сами данные редактируются в текстовом поле с поддержкой механизма переменных . При отправке запроса в список HTTP-заголовков добавляется заголовок Content-Type со значением text/plain .

Секция конфигурирования ответа

Давайте выполним запрос на url https://testmace-stage.herokuapp.com/posts и посмотрим, как выглядит секция ответа:
Секция ответа RequestStep узла
Верхняя часть секции показывает краткую информацию об ответе: код ответа с указанием, успешный он или нет, время выполнения запроса и размер ответа.
Нижняя область секции ответа разбита на несколько вкладок:
  • Response body - содержит тело ответа, представленное различными способами. На данный момент имеются следующие представления тела ответа:
    • Parsed- ответ в виде дерева. Каждый лист дерева имеет контекстное меню для создания Assertion узлов и для работы с динамическими переменными
    • JSON - JSON-подсветка тела ответа. Существует только в случае, когда тело ответа пришло в формате json.
    • XML - XML-подсветка тела ответа. Существует только в случае, когда тело ответа пришло в формате XML.
    • HTML - HTML-подсветка тела ответа. Показывается в случае, если тело ответа - HTML-страница
    • Text - текстовое представление тела ответа без подсветки
    • Preview - отрендеренный вариант тела ответа. Показывается в случае, если тело ответа - HTML-страница
  • Response headers - список HTTP-заголовков ответа
  • Assertions - список assertion-ов, которые содержатся в дочернем Assertion узле.

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

RequestStep узел представляет из себя папку с названием узла, внутри которой содержится файл index.yml, имеющий следующий формат:
1
{
2
"type": "object",
3
"properties": {
4
"type": {
5
"description": "Type of Folder node",
6
"const": "RequestStep",
7
"type": "string"
8
},
9
"assignVariables": {
10
"description": "List of variables assignments",
11
"type": "array",
12
"items": {
13
"$ref": "#/definitions/AssignVariable"
14
},
15
"default": []
16
},
17
"requestData": {
18
"$ref": "#/definitions/IRequestData"
19
},
20
"authData": {
21
"$ref": "#/definitions/IAuthorizationData",
22
"description": "Authorization parameters"
23
},
24
"children": {
25
"description": "List of children names",
26
"type": "array",
27
"items": {
28
"type": "string"
29
},
30
"default": []
31
},
32
"variables": {
33
"$ref": "#/definitions/NodeVariables",
34
"description": "Node variables dictionary"
35
},
36
"name": {
37
"description": "Node name",
38
"type": "string"
39
}
40
},
41
"required": [
42
"assignVariables",
43
"authData",
44
"children",
45
"name",
46
"requestData",
47
"type",
48
"variables"
49
],
50
"definitions": {
51
"AssignVariable": {
52
"type": "object",
53
"properties": {
54
"path": {
55
"description": "Path in $response variable (e.g. body.id)",
56
"type": "string"
57
},
58
"assign": {
59
"$ref": "#/definitions/NodeReference",
60
"description": "Link on target node (one of parents)"
61
},
62
"variable": {
63
"description": "Name of dynamic variable in target node",
64
"type": "string"
65
}
66
},
67
"required": [
68
"assign",
69
"path",
70
"variable"
71
]
72
},
73
"NodeReference": {
74
"type": "object",
75
"properties": {
76
"refNodePath": {
77
"description": "Absolute path to node",
78
"type": "string"
79
},
80
"type": {
81
"description": "Marker of reference entity",
82
"const": "reference",
83
"type": "string",
84
"default": "reference"
85
}
86
},
87
"required": [
88
"refNodePath",
89
"type"
90
]
91
},
92
"IRequestData": {
93
"type": "object",
94
"properties": {
95
"request": {
96
"description": "Common request parameters",
97
"type": "object",
98
"properties": {
99
"method": {
100
"$ref": "#/definitions/RequestMethod",
101
"description": "HTTP-method"
102
},
103
"url": {
104
"type": "string"
105
}
106
},
107
"required": [
108
"method",
109
"url"
110
]
111
},
112
"params": {
113
"description": "Query parameters",
114
"type": "array",
115
"items": {
116
"$ref": "#/definitions/NameValueParam"
117
}
118
},
119
"body": {
120
"$ref": "#/definitions/IRequestBody",
121
"description": "Body parameters"
122
},
123
"headers": {
124
"description": "Headers",
125
"type": "array",
126
"items": {
127
"$ref": "#/definitions/NameValueParam"
128
}
129
},
130
"disabledInheritedHeaders": {
131
"description": "Names of disabled headers",
132
"type": "array",
133
"items": {
134
"type": "string"
135
}
136
},
137
"strictSSL": {
138
"$ref": "#/definitions/StrictSSLOptions",
139
"description": "Requires SSL certificates be valid"
140
}
141
},
142
"required": [
143
"body",
144
"disabledInheritedHeaders",
145
"headers",
146
"params",
147
"request",
148
"strictSSL"
149
]
150
},
151
"RequestMethod": {
152
"enum": [
153
"DELETE",
154
"GET",
155
"OPTIONS",
156
"PATCH",
157
"POST",
158
"PUT"
159
],
160
"type": "string"
161
},
162
"NameValueParam": {
163
"type": "object",
164
"properties": {
165
"name": {
166
"type": "string"
167
},
168
"value": {
169
"type": "string"
170
},
171
"isChecked": {
172
"type": "boolean"
173
}
174
},
175
"required": [
176
"name",
177
"value"
178
]
179
},
180
"IRequestBody": {
181
"type": "object",
182
"properties": {
183
"type": {
184
"$ref": "#/definitions/RequestBodyType",
185
"description": "Type of body"
186
},
187
"jsonBody": {
188
"description": "JSON string of body",
189
"type": "string"
190
},
191
"xmlBody": {
192
"description": "XML string of body",
193
"type": "string"
194
},
195
"textBody": {
196
"type": "string"
197
},
198
"formData": {
199
"description": "multipart/form-data form",
200
"type": "array",
201
"items": {
202
"$ref": "#/definitions/RequestStepFormData"
203
}
204
},
205
"formURLEncoded": {
206
"description": "application/x-www-form-urlencoded form",
207
"type": "array",
208
"items": {
209
"$ref": "#/definitions/NameValueParam"
210
}
211
},
212
"file": {
213
"description": "Link on file, which will be used as a content for body",
214
"type": "string"
215
}
216
},
217
"required": [
218
"file",
219
"formData",
220
"formURLEncoded",
221
"jsonBody",
222
"textBody",
223
"type",
224
"xmlBody"
225
]
226
},
227
"RequestBodyType": {
228
"enum": [
229
"File",
230
"FormData",
231
"FormURLEncoded",
232
"Json",
233
"Text",
234
"Xml"
235
],
236
"type": "string"
237
},
238
"RequestStepFormData": {
239
"type": "object",
240
"properties": {
241
"type": {
242
"$ref": "#/definitions/FormDataField"
243
},
244
"name": {
245
"type": "string"
246
},
247
"value": {
248
"type": "string"
249
},
250
"isChecked": {
251
"type": "boolean"
252
}
253
},
254
"required": [
255
"name",
256
"type",
257
"value"
258
]
259
},
260
"FormDataField": {
261
"enum": [
262
"File",
263
"Text"
264
],
265
"type": "string"
266
},
267
"StrictSSLOptions": {
268
"enum": [
269
"Inherit",
270
"No",
271
"Yes"
272
],
273
"type": "string"
274
},
275
"IAuthorizationData": {
276
"type": "object",
277
"properties": {
278
"type": {
279
"type": "string"
280
}
281
},
282
"required": [
283
"type"
284
]
285
},
286
"NodeVariables": {
287
"type": "object",
288
"additionalProperties": {
289
"type": "string"
290
}
291
}
292
},
293
"$schema": "http://json-schema.org/draft-07/schema#"
294
}
Copied!
Last modified 2yr ago