并行化 类 和 testng 中的方法

Parallelizing classes and method in testng

我有一个用例,我必须在一个 class 下动态地 运行 某些测试方法。

我正在使用 @factory 注释来动态生成这些测试 classes。

我已经在提到的 class 运行ning 下并行使用了我的测试方法。

如何使测试 classes 和测试方法并行?无论如何也可以这样做吗?

public class FactoryClass {

    @Factory
    public Object[] factoryMethod() {
        return new Object[] { new TestClass(), new TestClass() }
    }
}

public class TestClass {

    @DataProvider(name = "firstDataProvider", parallel = true)
    public Object[] firstDataProvider() {
        return new Object[] { };
    }

    @DataProvider(name = "secondDataProvider", parallel = true)
    public Object[] secondDataProvider() {
        return new Object[] { };
    }

    @Test(dataProvider = "firstDataProvider")
    public void firstTestMethod(String arg) {

    }

    @Test(dataProvider = "secondDataProvider")
    public void secondTestMethod(String arg) {

    }
}

test.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" parallel="methods"  data-provider-thread-count="60">
    <test name="test1">
        <classes>
            <class name="com.amriteya.test.FactoryMain"></class>     
        </classes>
    </test>
</suite>

以下是我的 classes 的布局。

test.xml 中,我正在设置 parallel="methods" 但它没有为我提供正确的输出。

您不能同时为测试方法和测试 class 设置并行 属性。看来您需要在套件级别设置并行测试并在测试级别设置并行 classes/methods,这里的 testng xml 示例要清楚:

<suite name="Suite1" parallel="tests">
    <test name="test1" parallel="methods">
        <classes>
            <class name="FactoryClass"/>
        </classes>
    </test>
    <test name="test2" parallel="methods">
        <classes>
            <class name="FactoryClass"/>
        </classes>
    </test>
</suite>

所有方法都将 运行 在唯一线程中。 当您想 运行 并行测试时,这种情况很有用,例如在几组浏览器上。套件级别的并行选项将定义您有例如两个浏览器池(Chrome 和 Firefox - 您将向测试传递适当的参数),测试级别的 parellel 选项将定义池中有多少浏览器。