# Пользовательские переменные

Раздел “Переменные” - это key-value хранилище для сохранения и повторного использования каких-либо данных. Зачастую используется для удаления дублирования и повышения читаемости: согласитесь, переменная с названием greetingUrl говорит о большем, чем просто строка <https://next.json-generator.com/api/json/get/EJvQVEVGL>.

Механизм переменных очень хорошо интегрирован во все части приложения и обладает следующими особенностями:

* Значения переменных могут быть строками, объектами и массивами и содержать ссылки на другие переменные.
* Переменные задаются для каждого узла и наследуются от узлов родителей.
* Значение переменных может ссылаться на другие переменные.
* Имена [встроенных переменных](https://docs-ru.testmace.com/0.0.1-beta.14/variables/variables) начинаются с $.

### Использование переменных

Использовать переменные можно в любых строковых параметрах узлов. Примерами таких параметров могут служить url, название заголовка, токен авторизации и многое многое другое. Для того, чтобы использовать переменную необходимо использовать следующий формат `${variableName}`, где `variableName` - это ссылка на переменную. Вот несколько примеров.

* `${id}`
* `${$dynamicVar.id}`
* `${$response.body.name}`

В полях параметров узлов можно комбинировать строки и ссылки на переменные. Например, в качестве url вы можете использовать следующую строку `http://${host}/posts/${$dynamicVar.id}`

Для обращения к элементу массива, которых сохранен в переменной, можно воспользоваться следующим синтаксисом `${variableName[index]}` . Например, для обращения к id третьей сущности из ответа необходимо написать `${$response.body[2].id}` . Обратите внимание, что индексация начинается с нуля.&#x20;

Для переменных работает автодополнение

![Автодополнение переменных](https://1448546621-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMtpiZOkqva1t-DrvG%2F-LiMuFFKgZGs5cuIEhIy%2Fuv_1.gif?alt=media\&token=8c92811d-3c4f-48b8-a6d6-79a92b0aca68)

и подсветка значения переменной при наведении на нее

![Подсветка значения переменной](https://1448546621-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMtpiZOkqva1t-DrvG%2F-LiMuIDuHPhY4ieNJGmf%2Fuv_2.png?alt=media\&token=4dc3116c-e6dd-4a31-9adc-04aca846f866)

В интерфейсе каждого узла есть кнопка variables с помощью которой вызывается диалог  переменных. Выглядит данная кнопка следующим образом:

![Кнопка открытия диалога переменных](https://1448546621-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-LiMtpiZOkqva1t-DrvG%2F-LiMuLP7hf6Kl1GHtlIx%2Fuv_3.png?alt=media\&token=4eccb436-af9f-4405-b44e-af200e6dd516)

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