cucumber - 在 docker 中分发黄瓜 junit5 测试
问题描述
我有一个在天蓝色构建和发布管道上运行的黄瓜项目。
我已经安装了 docker 和 docker-compose,我可以使用docker-selenium
through打开容器和网格docker-compose
我想分发黄瓜测试,有点像这里解释的。但在那个链接中,它被解释为使用testng
,我正在使用junit5
黄瓜。结合我们对junit5中黄瓜并行性的了解,我将如何实现这一点,特别是链接的以下部分?
@Parameters({"Port"})
@BeforeClass
public void initiateDriver(String Port) throws MalformedURLException {
if(Port.equalsIgnoreCase("9001"))
{
driver = new RemoteWebDriver(new URL("http:localhost:4444/wd/hub"), DesiredCapabilities.chrome());
driver.manage().window().maximize();
}
else if(Port.equalsIgnoreCase("9002")){
driver = new RemoteWebDriver(new URL("http:localhost:4444/wd/hub"), DesiredCapabilities.firefox());
driver.manage().window().maximize();
}
}
据我了解,如果我提到cucumber.execution.parallel.enabled=true
,junit-platform.properties
它会在每个功能文件中并行运行,我如何在port
下面提到实现
- 在一个容器中运行每个功能
- 有没有办法将不同功能文件的每个场景分布在单独的容器中?
解决方案
通常你会让你的 CI 运行一个测试矩阵。这个测试矩阵已经可以并行运行不同的作业。矩阵中的每个作业都可以执行所有测试或一部分测试。您可以使用标签来包含或排除对某些作业配置的某些测试。这可确保浏览器和操作系统的特定问题立即显现出来。
这也稍微简化了问题。当您不使用不同的浏览器类型启动 Selenium Grid 时,您不必找到一种聪明的方法来将每个测试连接到正确的浏览器。
相反,您每个作业只需使用一种浏览器类型启动 Selenium Grid。网格启动后,每个作业都可以使用多个远程 Web 驱动程序并行运行测试。然后,您所要做的就是确保您的测试不会尝试使用更多的浏览器,然后网格可用。这可以通过设置一些配置参数来完成:
cucumber.execution.parallel.enabled=true
cucumber.execution.parallel.config.strategy=fixed
cucumber.execution.parallel.config.fixed.parallelism=4
您必须获取这些配置参数才能执行测试。一种方法是使用 maven 配置文件,但还有许多其他方法可以做到这一点:
<profile>
<id>parallelism</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<properties>
<configurationParameters>
cucumber.execution.parallel.enabled=true
cucumber.execution.parallel.config.strategy=fixed
cucumber.execution.parallel.config.fixed.parallelism={env.CONCURRENT_TESTS}
</configurationParameters>
</properties>
</configuration>
</plugin>
</plugins>
</build>
</profile>
你可以像这样把它绑在一起:
test:
stage: test
script:
- ./start-selenium-grid $BROWSER $CONCURRENT_TESTS
- mvn test -Pparallelism
parallel:
matrix:
- OS: Windows
OS_VERSION: 10
BROWSER: [Chrome, Firefox, Edge]
CONCURRENT_TESTS: 4
- OS: OS X
OS_VERSION: Big Sur
BROWSER: [Chrome, Firefox, Edge, Safari]
CONCURRENT_TESTS: 2
所以总结一下。首先为不同的浏览器并行运行构建作业。然后在每个作业中,针对多个 Web 驱动程序并行运行测试。
推荐阅读
- amazon-web-services - DynamoDB 不在流中显示更新的项目数据
- javascript - 同步方法不从服务器获取消息
- proxy - 3proxy - 如果我与子网一起使用,代理将不起作用
- javascript - Vue - 防止项目在网格中拖动
- mysql - Pyspark:将数据帧存储为 MySQL 表列中的 JSON
- azure - 如何使用 sim7600 连接到 Azure IOT 集线器?
- ios - 需要 RealityKit 中 MeshResource/Box 的开始和结束位置
- sqlite - 如何从 NoteStore.sqlite 文件中提取哈希值
- sql - 将 Varchar 列中的所有数据转换为日期格式
- android - 从 Android 11 后台启动的前台服务打开相机