0

我正在用 Selenium、Maven 和 Java 构建一个 Gauge 自动化项目。当使用包含的表数据执行规范时,例如

# 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

然后它移动到下一个规范。但是,当在 2 个节点上并行运行相同的规范时,Gauge 的行为会有所不同:

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?

注意:我知道将场景重写为自包含是一种方法,但是这些测试变得非常长、非常快并且增加了运行时间。

4

1 回答 1

0

经过一些实验,事实证明 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

它有效地在规范级别而不是场景级别应用并行化。

于 2020-08-10T16:01:03.223 回答