✔️ Таблица геркин, которая создается в самом сценарии — это не то же самое, что таблица, созданная в секции «Переменные». Далее я таблицу геркин, объявленную в сценарии буду называть «обычной», а таблицу, объявленную в секции «Переменные» — «таблицей переменных» (я бы предпочел называть ее «именованной таблицей переменных», но это слишком длинно). Далее вы узнаете почему именно «таблица переменных»).
✔️ Оба вида таблиц в ТурбоГеркин — это не ТаблицаЗначений из языка 1С! Тестировщики с опытом разработки на встроенном языке 1С, часто ассоциируют таблицу геркин с объектом-коллекцией ТаблицаЗначений. Но на самом деле под капотом это не она. И более того, оба вида таблиц реализованы в текущей версии VA по-разному (см. ниже), и это главная причина, почему с ними приходится работать по-разному (и из-за чего возник вопрос).
✔️ Обычная таблица геркин под капотом представляется в виде объекта Массив. То есть это индексированная коллекция, к элементам которой можно обращаться по индексу (от нуля до количества строк минус один). Элементами этой коллекции являются объекты с типом Структура, каждая структура содержит данные одной строки, значения ячеек которой хранятся в виде пары
"КолN" => "Значение колонки N", где N - порядковый номер колонки таблицы:Сценарий: Работа с обычной таблицей геркин
И Я запоминаю в переменную "ОбычнаяТаблица" значение
| "Язык" | "Приветствие на этом языке" |
| "Русский" | "Привет, Мир!" |
| "Английский" | "Hello, World" |
И Я запоминаю значение выражения 'Контекст.ОбычнаяТаблица[1].Кол1' в переменную "Язык"
И Я запоминаю значение выражения 'Контекст.ОбычнаяТаблица[1].Кол2' в переменную "Приветствие"
И я вывожу сообщение в менеджер тестирования 'Приветствие на языке $Язык$: $Приветствие$'
// Выведет: "Приветствие на языке Русский: Привет, Мир!"
✔️ Таблица переменных — это Структура. В ней строки проиндексированы не числами, а ключами, в качестве которых используются значения самой первой колонки. Благодаря этому вы можете получить данные строки, обратившись к конкретной строке по имени, «разыменовывая» через точку (поэтому я и называю этот вид таблиц «таблицей переменных»), сравните с предыдущим примером:
#language: ru
@tree
Функционал: Таблицы в TurboGherkin
Переменные:
* Приветствия
| "Язык" | "Приветствие" |
| "Русский" | "Привет, Мир!" |
| "Английский" | "Hello, World" |
Сценарий: Работа с таблицей переменных
// Обращаюсь по ключу строки, ключ - значение первой по порядку колонки:
И я вывожу сообщение в менеджер тестирования "Приветствия.Русский.Приветствие"
// Выведет "Привет, Мир!"
// А что, если нам надо вывести значение из самой первой колонки?
И я вывожу сообщение в менеджер тестирования "Приветствия.Русский.Язык"
// Выведет "Русский"
✔️ Значения первой колонки и первой строки таблицы переменных — идентификаторы. В отличие от обычной таблицы, у таблицы переменных есть жесткое требование к значениям ячеек первой строки и ячеек первой колонки. Они должны быть правильными ключами Структуры и к ним предъявляются такие же требования, как к именам переменных во встроенном языке 1С: они должны состоять только из букв, цифр и символа подчеркивания, должны начинаться только с буквы или символа подчеркивания. В примерах выше таблицы переменных были правильные, а вот при попытке объявить таблицу в секции Переменные вот так, как ниже приведет к ошибке
Ошибка при вызове метода контекста (Вставить): Задано неправильное имя атрибута структуры:Функционал: Таблицы в TurboGherkin
Переменные:
* Приветствия
| "Язык" | "Приветствие на этом языке" |
| "Русский" | "Привет, Мир!" |
| "Английский" | "Hello, World" |
Сценарий: Работа с таблицей переменных
// ...
На вопросы и батхёрт )) отвечу в комментариях. А еще приходите изучать VA ко мне на курс.
🦋 @QA_1C