gpt4 book ai didi

java - 如何使用相同的数据提供者并行运行 Selenium 测试

转载 作者:行者123 更新时间:2023-12-02 04:28:42 26 4
gpt4 key购买 nike

我有一个场景,我需要使用相同的数据提供程序并行运行我的 Selenium 测试。根据我的阅读,这是可能的,但无法让它工作。我有一个集线器和一个节点在一台机器上运行,另一个节点在另一台机器上运行。

我的数据提供者

// Data provider for Storage Rule Suite
@DataProvider(name = "StorageRuleDataProvider", parallel =true)
public static Object[][] getStorageData(Method m) {
return TestUtil.getData(m.getName(), TestBase.storageSuite);
}

我的测试

@Test(groups = { "CreateNewStorageRule" }, dependsOnGroups = { "StoragePage" }, dataProviderClass = TestDataProvider.class, dataProvider = "StorageRuleDataProvider", threadPoolSize = 20)
public void createNewStorageRuleTest(Hashtable<String, String> data){}

XML

<suite name="Storage Rule Suite" parallel="tests" data-provider-thread-count="20"  >

当我在 xml 文件中运行测试时,我在每个节点上打开了两组浏览器,但是当它尝试登录时,有时它会在一个浏览器中输入两次凭据,而在另一个浏览器上什么也不会输入,有时什么也得不到在一个浏览器上输入。

最佳答案

您所描述的是非线程安全 Selenium 测试自动化框架的经典示例。在大多数情况下,您可以通过为每个测试类提供一个驱动程序实例并在单线程中运行该类的所有测试来解决此问题。

但是,如果您想在多个并行线程中运行单个测试类的内容,则需要在框架中重新设计 is-a 和 has-a 关系。以下是如何完成此操作的详细示例:

http://automatictester.co.uk/2015/04/11/parallel-execution-on-method-level-in-selenium-testng-framework

尽管如此,这可能会给您的测试自动化增加额外的工作和额外的复杂性。我会三思而后行,为什么您要使用数据提供程序并行运行 Selenium 测试方法,并尝试回答这个问题(如果您确实需要这样做)。

根据我的经验,如果您开始将数据提供程序与 Selenium 结合使用,您可能会遇到整体测试方法的问题。也许您尝试在 UI 级别上进行过多的自动化,而不是将测试推送到堆栈中,例如API 级别。

关于java - 如何使用相同的数据提供者并行运行 Selenium 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31812760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com