在testng中,保留顺序和逐个实例意味着什么?

时间:2015-11-20 21:36:03

标签: testng

我找不到这两个规范在testng中的含义的详细解释。有人可以解释一下吗?请检查以下代码。

<?xml version="1.0" encoding="UTF-8"?>

<test name = "Test1"  group-by-instances="true" preserve-order="true">
    <classes>
        <class name = "com.facebook.tests.SignUp_Test_Factory"></class>
    </classes>
</test>

公共类SignUp_Test_Factory {

WebDriver driver;
FacebookMainPage fbMainPage;
HashMap<String,String> singUpMap = new HashMap<String,String>();
@Factory(dataProvider = "signUp", dataProviderClass = PagesData.class)
public  SignUp_Test_Factory(String firstName, String lastName, String email) {
    singUpMap.put("firstName", firstName);
    singUpMap.put("lastName", lastName);
    singUpMap.put("email", email);

}
@BeforeClass(alwaysRun = true)
public void setUp(){
    driver = new FirefoxDriver();
    fbMainPage = PageFactory.initElements(driver, FacebookMainPage.class);
}

@AfterClass(alwaysRun = true)
public void teardown(){
    this.driver.quit();
}
@Test
public void loadPage(){
    fbMainPage.loadPage();
    driver.manage().deleteAllCookies();
}
@Test(dependsOnMethods = "loadPage")
public void fillFirstName(){
    fbMainPage.setText_FirstName(singUpMap.get("firstName"));
}
@Test(dependsOnMethods = "fillFirstName")
public void fillLastName(){

    fbMainPage.setText_LastName(singUpMap.get("lastName"));
}
@Test(dependsOnMethods = "fillLastName")
public void fillEmail(){

    fbMainPage.setText_EmailMobile(singUpMap.get("email"));
}

}

public static Object[][] signUp(){
    return new Object[][]{
            {"jason","ni","nijinxin527@hotmail.com"},
            {"@#$%@","@#$@#","@#$$%%^@"},
            {"Lee","wang","wLee@gmail.com"}
    };
}

“按实例分组”和“保留订单”在这里做什么?

1 个答案:

答案 0 :(得分:4)

关于preserve-orderdocumentation说:

  

默认情况下,TestNG将按照XML文件中的测试顺序运行测试。如果您希望此文件中列出的类和方法以不可预测的顺序运行,请将preserve-order属性设置为false

xml description说:

  

@attr preserve-order如果为true,则此标记中的类将按照XML文件中的顺序运行。

所以我们可以说preserve-order="true"在这里是无用的。但看起来它有时有助于按预期顺序运行测试。 (TestNG问题出在哪里?)

关于group-by-instances documentation说:

  

默认情况下,依赖方法按类分组。例如,如果方法b()依赖于方法a(),则TestNG将不会运行b(),直到所有实例都调用了它们的a()方法。在某些情况下可能不希望出现这种情况,例如测试登录和退出各个国家/地区的Web浏览器。