使用selenium grid testng并行执行测试

时间:2015-01-19 11:49:52

标签: selenium selenium-webdriver testng selenium-grid

我在一个类中有5到6个方法,并希望在不同的节点上并行运行方法。我有2个网格设置,里面有4个节点。

在下面查找我的testng.xml

<suite name="Test" parallel="methods"  thread-count="2">

    <test name="Test1">
        <classes>
             <class name="test.LoginTest"/>
        </classes>
    </test>

</suite>

我有一个测试工具,它可以使用login,common和utils类

Public class TestHarness{
public WebDriver driver = null;
public DesiredCapabilities cap = null;

public Login login;
public Common common;
    public void initilize(){
        cap = DesiredCapabilities.firefox();
                cap.setBrowserName("firefox");
                cap.setPlatform(Platform.ANY);
        driver = new RemoteWebDriver(new URL(CONFIG.getProperty("hub")),cap);

        common = new Common(driver);
        login = new Login(driver);
        utils = new Utils(driver);

    }

}

在我的测试类中,我扩展了测试工具,在@BeforeMethod中我调用了intilize方法

public class LoginTest extends TestHarness{

    @BeforeMethod
    public void startTest() {

        initilize();
        login.loginAsAdmin();
    }

    @Test
    public void testLoginWithCorrectPassword(){
        common.goToAdminSettings();
    }

    @Test
    public void testLoginwithInCorrectPassword(){
        utils.getMessage();
    }
}

如果我运行测试,我会看到以下问题

两个浏览器在每个节点中打开一个,但只有一个浏览器启动应用程序而另一个浏览器不启动。

如果我遗失了什么,请告诉我?

谢谢

2 个答案:

答案 0 :(得分:1)

1) 你确定你正在运行正确的测试课吗?

<class name="test.LoginTest"/>

你的考试在:

public class Testing123 extends TestHarness{

2) 您的代码未显示驱动程序的声明。 确保此字段不是静态

3)另外,检查网格实际配置为处理的内容: http://localhost:4444/grid/admin/AllNodes

4)将测试配置中的线程数提高到4。

答案 1 :(得分:1)

即使驱动程序是非静态的,它也会在测试方法之间共享 因为它们是从同一个类实例中调用的

让我们将测试方法放在单独的类

a)将@BeforeMethod移至TestHarness类

b)创建

public class LoginTest2 exteds TestHarness 

并在那里移动第二个@Test方法

c)修改套件:

<suite name="Test" parallel="classes"  thread-count="2">

<test name="Test1">
    <classes>
         <class name="test.LoginTest"/>
         <class name="test.LoginTest2"/>
    </classes>
</test>

如果这会有所帮助 最终解决方案可以是ThreadLocal,如下所示:

parallel-webdriver-executions-using-testng