0

我有以下功能文件:

Given I open "google.com" simultaneously in both FF and IE
When I type "stackoverflow" and submit
Then I should see the desired results

如何在 2 个不同的浏览器上并行运行测试?

我知道它可以使用 TestNG 完成,但我没有在我的项目中使用 TestNG。我想知道是否有其他方法。

4

3 回答 3

1

我可以在这里想到三种不同的方法。

  • 像你一样写下这个场景。第一步找到IE后,创建一个IE实例。当你在第一步看到 FF 时,创建一个 FF 实例。然后在以下步骤中使用两者。

  • 步骤中根本不要包含浏览器。创建它们并在您将工作委托给的助手类中使用它们。

  • 为每个浏览器创建一个场景。“当我用 Firefox 打开 Google 时……”</p>

如果要明确,请使用最后一种方法。

如果您的用户不关心浏览器,请使用第二种方法。

我自己不会使用第一种方法。

于 2016-02-29T05:36:09.073 回答
1

确定哪种方法最适合实现并行执行- Cucumber-JVM 4 支持从 cucumber v 4.0.0 并行执行,我们不需要为每个功能文件创建单独的运行器,您可以使用 JUnit 来实现它(不需要使用 TestNG & cucumber-jvm-parallel-plugin)

从黄瓜 4.0.0 开始实现并行执行的步骤 -

1.添加正确的依赖集。我在实施过程中遵循了 JUnit。

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>4.2.3</version>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>4.2.3</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>datatable</artifactId>
    <version>1.1.12</version>
</dependency>


<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-picocontainer</artifactId>
    <version>4.2.3</version>
    <scope>test</scope>
</dependency>

2.在POM.XML下添加Maven-Surefire-Plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M3</version>
    <configuration>
        <parallel>methods</parallel>
        <threadCount>1</threadCount>
        <reuserForks>false</reuserForks>
        <testErrorIgnore>true</testErrorIgnore>   
        <testFailureIgnore>true</testFailureIgnore>
        <includes>
            <include>**/*RunCukeTest.java</include>
        </includes>
    </configuration>
</plugin>

注意 - RunCukeTest 是运行程序文件名,请记住,TestNG 依赖会导致 Surefire 忽略 JUnit 包装类。如果根本不需要,请删除所有 TestNG 依赖项,或者您需要为 TestNG 定义 2 个执行,为 JUnit 定义另一个,并根据需要禁用一个。

一切完成后,您需要为每个场景传递要从 excel、json 等源运行的浏览器名称。

于 2019-04-20T17:57:01.607 回答
0

如果您使用的是 cucumber,则必须创建多个运行器,然后使用 maven 并行运行它们。所以为每一步定义创建跑步者很痛苦,所以我们必须在目标文件夹中的运行时创建跑步者。在运行时创建跑步者有两种方法。

  1. 在这里使用黄瓜 JVM 并行插件

  2. 如果您使用的是最新版本的黄瓜,这里有一个很棒的插件叫 cucable

于 2019-04-19T18:06:31.127 回答