【问题标题】:How to parallelize Gauge at specification level?如何在规范级别并行化 Gauge?
【发布时间】:2020-08-08 01:19:54
【问题描述】:

我正在使用 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?

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

【问题讨论】:

  • gauge 只能并行运行规范,并且期望场景是独立的。您可以将登录步骤作为上下文步骤移动,这也具有语义意义。

标签: ui-automation browser-automation getgauge


【解决方案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

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

【讨论】:

    猜你喜欢
    • 2017-08-22
    • 2016-05-30
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2017-07-23
    • 2021-09-05
    相关资源
    最近更新 更多