首页 > 解决方案 > TestNG:使用多个测试类在套件文件中执行并行测试

问题描述

我正在尝试运行配置套件文件的并行测试。这些测试适用于使用 Selenium 的 Web 应用程序。套件文件由多个测试组成。每个测试包含多个测试类。每个测试中的第一个类用于初始化(@BeforeTest)WebDriver 并关闭它(@AfterTest)。WebDriver 是静态的,以便将其传递给其他类(原因是我们需要从最后一个测试类结束的地方继续测试)。

当套件配置为按顺序运行测试时,测试成功运行。但是当套件配置为并行运行测试时,所有套件测试仅使用最后加载的 webdriver,并且每个测试都没有在各自的浏览器中运行。

你知道我该如何克服这种情况吗?

检查下面的套件模板:

<suite name="Register and Login functionality" parallel="tests" thread-count="2">
    <test name="Test-1">
        <parameter name="browser" value="chrome" />
        <classes>
            <class name="Init" />
            <class name="Register" />
            <class name="Login" />
        </classes>
    </test>
    <test name="Test-2">
        <parameter name="browser" value="chrome" />
        <classes>
            <class name="Init" />
            <class name="Register" />
            <class name="Login" />
        </classes>
    </test>
</suite>

来自 Init 测试类的模板:

public class Init{

    private static WebDriver driver;

    public WebDriver getWebDriver(){
        return this.driver;
    }

    @BeforeTest
    public void setUp(){
        driver = new ChromeWebDriver();
    }

    @AfterTest
    public void quit(){
        driver.stop();
    }

}

注册测试类的模板:

public class Register{

    private WebDriver driver;

    @BeforeClass
    public void setUp(){
        driver = Init.getWebDriver();
    }

    @Test
    public void test1(){
        ........
        ........
    }

    @Test
    public void test2(){
        ........    
        ........
    }

}

登录测试类的模板:

public class Login{

    private WebDriver driver;

    @BeforeClass
    public void setUp(){
        driver = Init.getWebDriver();
    }

    @Test
    public void test1(){
        ........
        ........
    }

    @Test
    public void test2(){
        ........    
        ........
    }

}

标签: javaseleniumparallel-processingtestng

解决方案


您在初始化类中使用静态 webdriver,这将确保只启动一个 webdriver 实例。

private static WebDriver driver;

正如您在问题中提到的,每个测试都没有在各自的浏览器中运行。您需要更改静态网络驱动程序。删除静态 Web 驱动程序并为每个测试启动 Web 驱动程序,这将在新浏览器中打开每个测试。


推荐阅读