# Динамические переменные

Динамические переменные - это переменные, значения которых определяются во время выполнения сценария. Сохранение авторизационных токенов, идентификаторов вновь созданных сущностей - вот яркие варианты использования данного механизма. Он состоит их двух частей - Variable assignment и собственно динамических переменных.

### Variable assignment

Это создание привязки части запроса к какой-либо динамической переменной. На данный момент данную привязку можно сделать только в [RequestStep](https://docs-ru.testmace.com/node-types/requeststep) узле. Для иллюстрации давайте создадим запрос который создает новый пост и сохраним id созданного постав в динамическую переменную.

Создаем запрос и выполняем его. К примеру, давайте сделаем запрос на POST <https://testmace-stage.herokuapp.com/posts>, с телом `{"title":"Our cool post!"}` . В данном случае RequestStep узел выглядит так:

![RequestStep после выполнения запроса](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-MEYIyEBJFryLAfjaAZw%2F-MEYK_GMtft1g8RmC33S%2FScreenshot%202020-08-12%20at%2019.42.02.png?alt=media\&token=6eee86f7-43b1-4f13-b525-31b96ebd2af9)

Теперь из parsed response на параметр id из контекстного меню вызовем диалог присваивания динамической переменной.

![Вид контекстного меню](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-MEYIyEBJFryLAfjaAZw%2F-MEYKqNfCuDUvy9N5T7T%2FScreenshot%202020-08-12%20at%2019.43.21.png?alt=media\&token=2fb21c8d-1c87-42ab-8be3-a094c9d17da1)

Выберем пункт Assign to variable. Откроется диалог присваивания переменной

![Диалог присваивания динамической переменной](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-MEYIyEBJFryLAfjaAZw%2F-MEYMwrhUFZ4cGMZD37F%2FScreenshot%202020-08-12%20at%2019.47.53%20copy.png?alt=media\&token=4aa1c973-d83b-4ca3-8a90-7f3ed8c51d28)

В данном диалоге отмечены следующие пункты

1. Путь в переменной `$request`, из которого будет браться значение
2. Выпадающий список предков, которым можно назначить динамическую переменную
3. Текущее значение по данному пути
4. Название динамической переменной

Создадим переменную с именем `id` в данном узле.

После присвоения динамической переменной ее можно найти в списке динамических переменных того узла, где производилось присвоение, т.е, в [RequestStep](https://docs-ru.testmace.com/node-types/requeststep) узле. Список динамических переменных можно найти на [вкладке переменных](https://docs-ru.testmace.com/variables/user-variables) узла в разделе Dynamic.

![Список динамических переменных RequestStep узла](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-MEYIyEBJFryLAfjaAZw%2F-MEYNacfor97fWXr626N%2FScreenshot%202020-08-12%20at%2019.55.26.png?alt=media\&token=63f820db-7c40-40d2-9297-7ffaafa6599b)

Для просмотра динамических переменных, назначенных на конкретный узел, необходимо открыть раздел **Values** вкладки **Variables** узла. Вот, например, как будет выглядеть данная вкладка для предыдущего примера для узла **MyService**:

![](https://1540441421-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh_FaVh9XfQJ0p1KqZ1%2F-MEYIyEBJFryLAfjaAZw%2F-MEYO_ymsIrJ2EG8Jiqb%2FScreenshot%202020-08-12%20at%2019.58.16.png?alt=media\&token=96957808-4530-490c-a1b7-375f38c0a086)

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

Все динамические переменные, доступные для конкретного узла, хранятся в переменной `$dynamicVar`. Например, чтобы сослаться на переменную `id`, созданную выше, необходимо написать `$dynamicVar.id`. Как и в случае с другими переменными, данный вид переменных поддерживает наследование и переопределение в потомках.
