Заменить строки в сценарии перед выполнением сценария - PullRequest
0 голосов
/ 09 октября 2019

Допустим, у меня есть следующий сценарий:

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 идентичны.

1 Ответ

0 голосов
/ 13 октября 2019

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

Но все же, знание того, как я могу изменить входные данные для каждого теста / функции / сценария / шага, было бы полезно.

...