我有以下功能文件:
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。我想知道是否有其他方法。
我有以下功能文件:
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。我想知道是否有其他方法。
我可以在这里想到三种不同的方法。
像你一样写下这个场景。第一步找到IE后,创建一个IE实例。当你在第一步看到 FF 时,创建一个 FF 实例。然后在以下步骤中使用两者。
步骤中根本不要包含浏览器。创建它们并在您将工作委托给的助手类中使用它们。
为每个浏览器创建一个场景。“当我用 Firefox 打开 Google 时……”</p>
如果要明确,请使用最后一种方法。
如果您的用户不关心浏览器,请使用第二种方法。
我自己不会使用第一种方法。
确定哪种方法最适合实现并行执行- 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 等源运行的浏览器名称。