У меня есть пример ответа json:
{
"colours": ["green","blue", "red"],
"type" : ["shoes","socks","t-shirts"],
"make" : ["nike", "adidas"],
}
У меня есть общая таблица сценариев:
|colours|type |make |
|red |shoes |nike |
|blue |socks |nike |
|green |t-shirts|adidas|
Я хочу использовать таблицу сценариев для подтверждения ответа json. Теперь я знаю, как это проверить по одному, например
* Assert colour is correct: <colours>
* Assert type is correct: <type>
* Assert make is correct: <make>
А затем выполните определение шага, как в примере ниже для цвета:
@Step("Assert colour is correct: <colours>")
public void assertColourIsCorrect(String colourValue) {
String responseBody = BridgeTestState.getLastResponse().getBody().toString();
itemState itemStateResp = new Gson().fromJson(responseBody, itemState.class);
assertThat("colours", itemStateResp.getColour(), is(equalTo(colourValue.toLowerCase())));
}
Примечание. getColour () поступает от установленного мной геттера и сеттера.
Теперь это работает, но, как вы можете видеть, это немного затянуто, поскольку мне нужно создать три отдельных шага для утверждения по каждому столбцу.
Я хочу быть немного умнее этого, но не знаю, как это реализовать. Я хотел бы определение шага, в котором он будет смотреть на ответ json и сравнивать его с таблицей на основе его поля, а затем оттуда просматривать значение.
Что-то вроде:
- Выводятся верные «поля» и «значения».
Я надеюсь, что это имеет смысл, в основном умное одношаговое определение для проверки между ответом json и строкой таблицы.
Scenario Outline
предназначен для выполнения столько тестов, сколько строк в егоExamples
части. Я думаю, что вам лучше будетData Table
, поскольку он может передавать несколько строк значений при выполнении одного сценария (при условии, что всеcolours
в вашем json возвращаются в одном ответе). - person JDelorean   schedule 04.02.2020| red, blue, green |
, а затем заполнить им списокArrays.asList(cellString.split("\\s*, \\s*"));
. Это то, что вы ищете? - person JDelorean   schedule 05.02.2020