Допустим, у меня есть следующий сценарий:
Scenario Outline: <testCase> <expectedResult>
Given I open the site "#"
When I add the following data to shipment
| field_name | field_value |
| id_1 | <timestamp> | # 1570689270595
| id_2 | <timestamp> | # 1570689270595
| id_3 | <timestamp> | # 1570689270595
| id_a | <timestamp_2> | # 1570689272523
| id_b | <timestamp_2> | # 1570689272523
| id_c | <timestamp_2> | # 1570689272523
Examples:
| testCase | expectedResult | timestamp | timestamp_2 |
| CORRECT USER INFO | PASSES | id_$timestamp | id_$timestamp |
Я пытался динамически устанавливать поля timestamp
& uuid
для создания разных идентификаторов для каждого теста, поскольку он должен быть уникальным,И я сделал это, установив хук beforeScenario
и манипулируя сценарием перед его выполнением, это код хука:
beforeScenario: function (uri, feature, scenario) {
scenario.steps.forEach((step) => {
if (step.arguments) {
step.arguments.map((argument) => {
if (typeof argument === 'string' || argument instanceof String)
return uniquify(argument);
if (argument.rows) {
argument.rows = argument.rows.map((row) => {
row.cells = row.cells.map((cell) => {
cell.value = uniquify(cell.value);
return cell;
});
return row;
});
}
return argument;
});
}
});
}
Короче говоря, это отображает каждый аргумент, предоставленный каждому шагу, и заменяет (черезuniquify
function) в аргументе некоторые предопределенные тексты, такие как $timestamp
.
Но проблема в том, что это не тот поток, который я должен делать, я не хочу заменять каждый аргумент, предоставленныйкаждый шаг, но заменить распределенный аргумент Example
на шаги таким образом, чтобы идентификаторы 1
до 3
были идентичны, а идентификаторы a
- c
идентичны.