Как распараллелить Gauge на уровне спецификации?

Я создаю проект автоматизации Gauge с помощью Selenium, Maven и Java. При выполнении спецификации с включенными данными таблицы, например

# Specification

| name |
| A |
| B |
| C |

## Scenario 1
* User logs in application

## Scenario 2
* User does something for product <name> 

В одном потоке он запускает:

mvn clean install
Output: 
Scenario 1
Scenario 2 for name A
Scenario 2 for name B
Scenario 2 for name C

Затем мы переходим к следующей спецификации. Однако Gauge ведет себя по-разному при параллельном запуске одной и той же спецификации на 2 узлах:

mvn clean install -DinParallel=true -Dnodes=2
Output:
Browser 1: Scenario 1
Browser 2: Scenario 2 for name A
Browser 1: Scenario 2 for name B
Browser 2: Scenario 2 for name C

Вы можете сразу увидеть, что сценарии из Browser 2 не будут успешными, поскольку «предварительное условие» из Scenario 1 не было выполнено.

Есть ли способ распараллелить Gauge на уровне спецификации?

Примечание: я знаю, что переписывание сценариев, чтобы они были автономными, - это один из возможных вариантов, но эти тесты получаются очень длинными, очень быстрыми и увеличивают время выполнения.


person oksyque    schedule 24.04.2020    source источник
comment
gauge может выполнять спецификации только параллельно и ожидает, что сценарии будут независимыми. Вы можете переместить свой шаг входа в систему как контекстный, что также имело бы семантический смысл.   -  person Srikanth Venugopalan    schedule 27.04.2020


Ответы (1)


После некоторых экспериментов выясняется, что Gauge имеет 2 разных параллелизма, в зависимости от того, как вы пишете спецификацию. Со спецификацией с тестовыми данными, такими как

# Specification

| name |
| A |
| B |
| C |

## Scenario 1
* User logs in application

## Scenario 2
* User does something for product <name> 

распараллеливание выполняется на уровне сценария, как описано в исходном вопросе:

mvn clean install -DinParallel=true -Dnodes=2
Output:
Browser 1: Scenario 1
Browser 2: Scenario 2 for name A
Browser 1: Scenario 2 for name B
Browser 2: Scenario 2 for name C

Однако при переписывании спецификации для включения тестовых данных в шаги

# Specification

## Scenario 1
* User logs in application

## Scenario 2 for A
* User does something for product "A"  

## Scenario 2 for B
* User does something for product "B"  

## Scenario 2 for C
* User does something for product "C"

вывод выглядит примерно так

mvn clean install -DinParallel=true -Dnodes=2
Output:
Browser 1: Scenario 1
Browser 1: Scenario 2 for name A
Browser 1: Scenario 2 for name B
Browser 1: Scenario 2 for name C

который эффективно применяет распараллеливание на уровне спецификации, а не на уровне сценария.

person oksyque    schedule 10.08.2020