首页 文章

如何并行运行testNG但是针对不同的测试

提问于
浏览
0

我正在尝试在不同的Android设备上并行运行我的自动化套件(使用Selenium Webdriver(Java)TestNG Maven实现) . 这是我在xml中的代码:

<test name="Test1">
    <parameter name="deviceName_" value="simulator1"/>
    <parameter name="port_" value="4723"/>
    <classes>
        <class name="tests.TotoTests">
            <methods>
                <include name=".*" />
            </methods>
        </class>
    </classes>
</test>

<!--test name="Test2">
    <parameter name="deviceName_" value="simulator2"/>
    <parameter name="port_" value="4725"/>
    <classes>
        <class name="tests.TotoTests">
            <methods>
                <include name=".*" />
            </methods>
        </class>
    </classes>
</test-->

在TotoTests课程中,我有20个测试 . 每个都有@Test注释 . 当我运行xml时,两个设备并行运行TotoTests类 . 所以我的device1(simulator1)运行20次测试,而我的device2(simulator2)也运行20次测试 .

但我想要的是,模拟器1在TotoTests中运行第一个测试,并且模拟器2开始在TotoTests中运行第二个测试 . 当一个设备完成后,它将在TotoTests中运行第三个测试 . 然后当其中一个设备完成时,它将运行第四个测试 . 所以要进行20次测试,我只需要一半的时间 . 因为每个设备只运行10次测试,或9次测试,或11次测试....但不是20次测试 .

我怎样才能做到这一点?

2 回答

  • 0

    在每次测试时添加参数parallel = true . 这可能会奏效 . 同样在上面的xml中,您可以在xml文件中添加parallel =“Class”参数

  • 0

    要创建多个线程并运行并行,您必须使用并行而不使用线程计数 . 试试这个修改后的代码

    <suite name="Suite" parallel="tests" thread-count="2" >
    <test name="Test1">
    <parameter name="deviceName_" value="simulator1"/>
    <parameter name="URL_" value="127.0.0.1:4723/wd/hub"/>
    <classes>
    <class name="tests.TotoTests">
     <methods>    
    <include name=".*" />
    </methods>
    </class>
    </classes>
    
    </test> <!—Test 1 -->
    <test name="Test2">
    <parameter name="deviceName_" value="simulator2"/>
    <parameter name="URL_" value="127.0.0.2:4725/wd/hub"/>
    <classes>
    <class name="tests.TotoTests">
    <methods>
    <include name=".*" />
    </methods>
    </class>
    </classes>
    </test> <!—Test 2 -->
    </suite> <!-- Suite -->
    

    希望它会奏效 .

相关问题