跨多个测试共享单个实例类

时间:2013-09-12 06:59:35

标签: selenium webdriver selenium-webdriver testng

我正在使用带有selenium webdriver和testng的Page对象模式。 我想在多个<test>中访问另一个类中的一个页面对象类的实例。

例如。

 <test name="Login scenario">
    <classes>
        <class name="sanitytests.LoginTests">
         <methods>
            <include name="validLogin"/>
         </methods>
        </class>
    </classes>
</test> 

  <test name="scenario2" preserve-order="true" parallel="false">
            <classes>
                 <class name="sanitytests.HomePageTests">
                 <methods>
                    <include name="clickOnMyAccountFromHome"/>
                 </methods>
                </class>
            </classes>
  </test> 

在我的LoginTests类中我使用的是homePage类的实例

@Test()
    public void validLogin(ITestContext context) throws Exception {

    loginPage.loginDetails(username,password);
    homePage = loginPage.loginAsValidUser();
    context.setAttribute("homePage",homePage);

    }

我的HomePageTests课程

@Test()
    public void clickOnMyAccountFromHome(ITestContext context) throws Exception {
        homePage = (HomePage) context.getAttribute("homePage");
        myAccountPage = homePage.navigateToMyAccountPage();
        context.setAttribute("myAccountPage", myAccountPage);

    }

我得到空指针异常,因为ItestContext用于在不在测试之间的方法之间共享参数。还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

根据我所读到的“ITestContext”,它与TestNG类/对象/方法有关。您可以将HomePage创建为静态,它将可用于整个套件运行。

答案 1 :(得分:0)

页面对象模式未声明对象只能创建一次。在每个测试中创建新实例。