gpt4 book ai didi

java - 使用 dataprovider 的 TestNG 并行测试/方法

转载 作者:行者123 更新时间:2023-12-01 09:37:59 24 4
gpt4 key购买 nike

我有一个像这样的 testNG 方法:

@Test(dataProvider="takeMyProvider")
public void myTest(String param1, String param2){

System.out.println(param1 + " " + param2);

}

我的数据提供程序返回 10 个元素。我的方法将在一个线程中执行 10 次。这怎么可能平行呢?例如

  • 我想要并行 5 个方法。 Webdriver 应同时打开 5 个浏览器。并行执行这 5 个测试后,应执行其他 5 个测试

  • 网络驱动程序应打开 10 个浏览器并并行执行所有 10 个元素

有人有想法吗?

最佳答案

您可以通过 TestNG 中的套件文件定义并行度。以下示例与 10 个线程并行运行方法:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="MySuiteNameHere" parallel="methods" thread-count="10">

<test name="Selenium Tests">
<classes>
<class name="foo.bar.FooTest"/>
</classes>
</test>
</suite>

您还需要注意,您的数据提供程序可以是线程安全的,以允许它不会强制该方法按顺序运行。

// data providers force single threaded by default
@DataProvider(name = "takeMyProvider", parallel = true)

不过要小心。使用并行方法运行时,TestNG 不会创建类对象的新实例。这意味着如果您在测试类对象上保存值,您可能会遇到线程问题。

另请注意,如果将线程数设置为 5,则它不会等待前 5 个线程全部完成,然后启动下一个 5 个。它基本上将所有测试方法放入队列中,然后启动 x线程。然后,每个线程只需从队列中轮询下一个元素(当该元素可用时)即可。

关于java - 使用 dataprovider 的 TestNG 并行测试/方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38689068/

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