首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用相同的数据提供程序并行运行selenium测试

如何使用相同的数据提供程序并行运行selenium测试
EN

Stack Overflow用户
提问于 2015-08-04 15:00:46
回答 2查看 2.5K关注 0票数 0

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

My DataProvider

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

我的测试

代码语言:javascript
复制
@Test(groups = { "CreateNewStorageRule" }, dependsOnGroups = { "StoragePage" }, dataProviderClass = TestDataProvider.class, dataProvider = "StorageRuleDataProvider", threadPoolSize = 20)
public void createNewStorageRuleTest(Hashtable<String, String> data){}

XML

代码语言:javascript
复制
<suite name="Storage Rule Suite" parallel="tests" data-provider-thread-count="20"  >

当我在xml文件中运行测试时,我在每个节点上有两组打开浏览器,但当它尝试登录时,有时它在一个浏览器中输入两次凭据,在另一个浏览器上不输入任何内容,有时在一个浏览器上没有输入任何内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-04 20:21:48

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

但是,如果希望在多个并行线程中运行单个测试类的内容,则需要重新设计框架中的关系。以下是如何做到这一点的详细示例:

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

尽管如此,这可能会给您的测试自动化增加额外的工作量和额外的紧凑性。我会仔细考虑为什么要使用数据提供程序并行运行Selenium测试方法,如果您真的需要这样做的话,请尝试回答这个问题。

根据我的经验,如果您开始将数据提供程序与Selenium相结合,您可能会对整个测试方法产生问题。您可能会尝试在UI级别上进行过多的自动化,而不是将测试向下推到例如API级别。

票数 1
EN

Stack Overflow用户

发布于 2015-08-04 15:05:56

首先,您必须使用parallel="methods"并行运行@Test方法。第二:我有一个类似的问题,更多的测试方法在同一个浏览器中被执行,我通过制作我的WebDriver ThreadSafe来解决它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31812760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档