Как написать схему сценария, чтобы захватить список объектов в одном аргументе?

При написании тестовых примеров сценария огурца иногда у меня возникает требование, чтобы один из заполнителей содержал список данных вместо одного. См. Ниже псевдопример:

Scenario Outline: example
Given I have <input_1> 
When I choose <input_2>
Then I should receive <result_list>  //instead of a single result

Examples:
| input_1        | input_2        | result                 |
| input_1_case_1 | input
@Then("....")
public void i_should_receive(Datatable or list of object) throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}
case_1 | result_1_case_1_part_1 | | | | result_1_case_1_part_2 | | | | result_1_case_1_part_3 |

В приведенном выше примере мой «результат» должен захватить список объектов для каждого отдельного параметра input_1 и input_2. Но с приведенным выше написанием огурец не будет компилировать последнее выражение во что-то вроде:

@Then("....")
public void i_should_receive(Datatable or list of object) throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

Как написать сценарий огурца, чтобы добиться того, чего я хочу?

Спасибо.


person user1559625    schedule 20.03.2016    source источник


Ответы (2)


Scenario Outline: example
Given I have <input_1> 
When I choose <input_2>
Then I should receive <result_list>  //instead of a single result

Examples:
| input_1        | input_2        | result                                                                
| input_1_case_1 | input
@Then("....")
public void i_should_receive(String result) throws Throwable {
    List<String> items = Arrays.asList(str.split("\\s*,\\s*"));
}
case_1 | result_1_case_1_part_1,result_1_case_1_part_2,result_1_case_1_part_3 |

Затем в вашем определении шага

@Then("....")
public void i_should_receive(String result) throws Throwable {
    List<String> items = Arrays.asList(str.split("\\s*,\\s*"));
}
person MikeJRamsey56    schedule 21.03.2016
comment
Если кто-то еще может создать/отредактировать список в файле функций, добавьте туда функцию trim(), чтобы удалить начальные или конечные пробелы. - person MikeJRamsey56; 21.03.2016
comment
Круто. Это намного лучше, чем иметь каждую часть результата в виде отдельного столбца. - person user1559625; 23.03.2016

Я смог установить список значений в примере с огурцом следующим образом:

Scenario Outline: The role already exists in the system, with the specified permissions
    Given the user admin is logged in
    And the role ADMIN with permissions <permissions> to be created
    When a call to SecurityService is performed to create system roles
    Then http status code 200 is returned
    Examples:
      |permissions                                       |
      |REGISTER_ACCOUNT,REVOKE_TOKENS,GET_ROLES,SET_ROLES|

И конкретный метод:

 @And("^the role ([^\"]*) with permissions ([^\"]*) to be created$")
 public void theRoleWithPermissionsToBeCreated(String roleCode, List<String> permissions) {

для меня это работает как шарм, и я получаю список строк напрямую, без необходимости анализировать строковое значение

person DarthRoman    schedule 04.04.2018