提问者:小点点

TestNG工厂并行运行测试,即使设置了并行=false


我正在使用testNG和Appium运行移动自动化。以下是我的代码:

package my.app.package;
public class TestDataProvider {

    @DataProvider(parallel=false)
    public static Object[][] GenericDataProviderWithNoCustomCapabilities() {
        return new Object[][] {
                {"", "Nexus_5_API_21_x86", "19", "C:\\Users\\me\\Desktop\\app.apk", "http://127.0.0.1:4723/wd/hub", ScreenOrientation.PORTRAIT},
                {"", "Nexus_5_API_21_x86", "20", "C:\\Users\\me\\Desktop\\app.apk", "http://127.0.0.1:4723/wd/hub", ScreenOrientation.LANDSCAPE}
                };
    }
}

在测试套件类中:

public class SanityTestAndroid {

    private ScreenOrientation orientation;

    @Factory(dataProviderClass = my.app.package.TestDataProvider.class, dataProvider="GenericDataProviderWithNoCustomCapabilities")
    public SanityTestAndroid(String version, String avd, String platformVersion, String appPath, String targetPath, ScreenOrientation orientation) throws Exception {
        AndroidDriverFactory.create(version, avd, platformVersion, appPath, targetPath);
        this.orientation = orientation;
    }

    @Test()
    public void testLoginInLandscape() throws Exception {   
        if (orientation == ScreenOrientation.LANDSCAPE) {
        ...}
    ...}

和testNG. xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="android automation" parallel="false">
  <test name="com.tribehr.qa.tests">
    <classes>
      <class name="my.app.package.test.SanityTestAndroid "/>
    </classes>
  </test>
</suite>

我已将所有testNG并行设置为false(据我所知),但在运行测试时,我仍然看到它正在并行运行。我不确定为什么,以及我可以做些什么来使它在队列中运行两次(因为给出了两个数据集)。


共3个答案

匿名用户

TestNG默认按顺序执行测试。如果它们同时执行,您必须有这样做的设置。

匿名用户

您需要将group-by-实例="true"属性添加到套件*. xml中的测试元素中。在其他情况下,它不会按照您期望的方式工作。

匿名用户

如果您的驱动程序在@beforeTest方法中初始化,那么驱动程序将一次打开所有测试,然后所有类的测试将顺序运行