Из комментариев кажется, что вам нужен способ сделать строку за строкой, в которой вы используете заголовки таблицы данных в качестве ключей для json. Вы не можете достичь этого, используя это на собственном примере, потому что это специально предназначено для отображения непосредственно на этапы, которые вы описываете сами. Как я вижу, есть два способа справиться с этим, в зависимости от вашего варианта использования.
Сначала по-прежнему работайте с ним как с параметрами в шагах, то есть
Then the "colours" is <colours>
And the "type" is <type>
, а затем просто есть один шаг имплементации
Then("the {string} is {string}")
public void theKeyIsValue(String key, String value) {
assertThat(json.get(key)).contains(value);
}
Другой, и, скорее всего, лучше было бы иметь дело с ним как с обычным сценарием, как уже предлагалось в комментариях (я не понимаю, почему вы утверждаете, что не можете). Что чаще всего лучше.
Однако, скорее всего, правильное решение - достаточно досадно - действительно переосмыслить ваш сценарий. Есть несколько действительно хороших рекомендаций для лучших практик и т. Д. c. на https://cucumber.io/docs/bdd/ они довольно быстрые и простые для чтения, и помогут решить многие начальные проблемы.
Трудно без полного примера, но из того, что вы пишете, я подозреваю что ваши тесты могут быть слишком техническими. Это чрезвычайно сложный баланс, но старайтесь держать их настолько расплывчатыми, чтобы они не указывали «как», а только «что». Пример Given the username "Kate"
лучше, чем Given I type the username "Kate"
, потому что в последнем вы указываете, что должно быть что-то, что вы можете набирать в тексте. Я обычно спрашиваю людей, работает ли их тесты с голосовым помощником.
Еще я подозреваю, что вы пытаетесь проверить слишком много вещей одновременно. Например, я замечаю, что между вашим json и вашим столом нет очевидной связи. То есть, если они должны совпадать, например, с индексом, это может иметь больше смысла. Однако, глядя на разреженные данные, я думаю, что вам нужны следующие тесты:
Scenario: The colour options
Given ...
When the options are given
Then the following can be chosen
| Colour |
| red |
| blue |
| green |
Scenario: The clothing options
Given ..
When the options are given
Then the following can be chosen
| Type |
| shoes |
| socks |
| t-shirts |
Таким образом, вы все равно можете повторно использовать шаги, вы можете использовать заголовок для клавиши в json, и, судя по вашим данным, тесты на самом деле более тесно связаны с ожидаемыми вещами.
Написание приемочных тестов - это искусство, требующее практики. Я надеюсь, что некоторые из предложенных здесь предложений могут быть использованы, однако трудно найти более прямые предложения без большего контекста.