Это невозможно.
Документация. В спецификации Cucumber указано, что раздел примеров должен представлять собой таблицу с одной строкой заголовка, а все остальные строки с данные:
В таблице должна быть строка заголовка, соответствующая переменным в шагах схемы сценария.
Каждая строка ниже создаст новый сценарий, заполняя значения переменных.
Техническая часть. Specflow использует парсер языка Gherkin, который преобразует файлы функций в AST (абстрактное синтаксическое дерево). . Этот синтаксический анализатор считывает строки входного файла одну за другой и создает токен для каждой строки. Из исходного кода TokenScanner:
Сканер читает документ огурца (обычно из файла .feature) и создает токен для каждой строки. Маркеры передаются анализатору, который выводит AST (абстрактное синтаксическое дерево).
Затем синтаксический анализатор считывает токены один за другим и определяет, к какому типу строки относится этот токен. Когда он находит строку примеров, он ищет одну строку заголовка (Examples_Definition), за которой следуют примеры. Если вы будете делать что-то вроде этого
|I |am | on | the |
|data |data |data |data |
|Office |Portal |link |
|data |data |data |
то третья строка будет рассматриваться как строка примеров с неправильным количеством ячеек.
На самом деле, как синтаксический анализатор сможет понять, есть ли у вас простая строка данных или строка заголовков? Все данные примеров представлены в виде строк. Aand Office
является полностью допустимым значением для столбца I
. Хорошо, в этом конкретном примере у вас есть 3 столбца в нижней части определения таблицы. А если бы столбцов тоже было бы четыре?
|I |am | on | the |
|data |data |data |data |
|Office |Portal |link | foo |
|data |data |data |data |
Невозможно определить вторую строку заголовка для синтаксического анализатора.
Читаемость. И, честно говоря, такие многострочные таблицы были бы нечитабельны для людей. Было бы очень сложно сопоставить части схемы третьего сценария из нижней и верхней части таблицы примеров. Но удобочитаемость — главная фишка корнишонов и Specflow. Подумайте о том, чтобы перепроектировать свои тесты, если вам нужно указать так много параметров для сценария.
person
Sergey Berezovskiy
schedule
19.04.2017