当前位置: 首页 > 知识库问答 >
问题:

TestNG套件具有并行数据提供程序和方法的随机顺序-如何实现?

冷善
2023-03-14

我有一个包含多个方法的测试类,其中每个方法都受够了并行数据提供程序。我想实现方法执行的混合顺序,但我无法控制数据提供程序线程池的大小--它被测试方法的数量所多重化。请参阅示例:

我的测试套件定义:

<suite data-provider-thread-count="5" parallel="methods" preserve-order="false" name="Data provider problem">
@Test(dataProvider = "dp1")
public void test1(TestData testData) { }

@Test(dataProvider = "dp2")
public void test2(TestData testData) { }

@DataProvider(name = "dp1", parallel = true)
public static Object[][] dp1() {
    return createTestData1();
}

@DataProvider(name = "dp2", parallel = true)
public static Object[][] dp2() {
    return createTestData2();
}
@Test(dataProvider = "dp")
public void test1(TestData testData) { }

@Test(dataProvider = "dp")
public void test2(TestData testData) { }

@DataProvider(name = "dp", parallel = true)
public static Object[][] dp(Method m) {
    if (m.getName().equals("test1")) {
        return createTestData1();
    }
    if (m.getName().equals("test2")) {
        return createTestData2();
    }
    return null;
}

仍然有10个测试执行并行运行。将数据提供程序方法移动到单独的类也没有帮助。

共有1个答案

壤驷喜
2023-03-14

是否尝试为@测试调整参数?

@Test(dataProvider = "dp", threadPoolSize=5)
 类似资料:
  • 我想在类中与数据提供者并行运行测试方法。我需要一个数据提供者,它每次在新测试方法开始为给定的测试运行生成部分动态数据之前都会被调用。让我用伪代码解释一下: 我怎样才能做到这一点?

  • 有人知道TestNG如何根据为测试方法指定的数据提供者名称计算出数据提供者方法是什么吗? 我找到了这个解决方案:https://gist.github.com/ae6rt/3805639 但是,它没有考虑到数据提供者可能是: 在完全不同的类别中定义,或 在父类中定义,并且 该方法可以是静态的,也可以是非静态的 我试图自己破解一些东西,但后来我想我不可能是第一个试图解决这个问题的人,特别是因为显然T

  • 我正在尝试通过TestNG进行多线程测试为测试实例化WebDrivers<代码>@AfterMethod在测试后关闭WebDrivers

  • 我已使用以下方法在应用程序中输入凭据。 其中EnterText定义如下: 在测试类中,我写了下面的代码 我得到以下错误: 失败:loginProxy(“11”,“Priya”)java.lang.NumberFormatException:java.lang.Integer处为空。parseInt(未知源)位于java.lang.Integer。parseInt(未知源) 请帮助解决同样的问题。据

  • suite name=“knowledgetest”verbose=“5”configfailurepolicy=“continue”data-provider-thread-count=“10”parallel=“methods”thread-count=“5”

  • 我有一个TestNG Dataprovider测试,如下所示: 输入csv 读者 测验 有许多输入文件,每个测试都包含一个优先级。我想单独运行优先级为1的测试。 在没有数据提供者的情况下,我可以使用下面的IMethodInterceptor过滤测试。 样品测试: 由于数据提供者的优先级是动态的,因此我无法根据优先级过滤测试。 不应执行其他测试,而应跳过其他测试。