Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用TestNG在循环中运行@beforeclass@test和@Afterclass案例_Java_Selenium_Webdriver_Testng - Fatal编程技术网

Java 如何使用TestNG在循环中运行@beforeclass@test和@Afterclass案例

Java 如何使用TestNG在循环中运行@beforeclass@test和@Afterclass案例,java,selenium,webdriver,testng,Java,Selenium,Webdriver,Testng,在 我需要在循环中运行上述集合。例如,需要使用一个Id登录运行所有my@test用例,注销和in-loop需要使用diff Id再次登录,并需要执行相同的操作。 如何使用selenium实现这一点。 请给我一些建议 提前感谢。我对Selenium和TestNG不太熟悉,但通常在单元TET中,您无法保证@Test methods的运行顺序 因此,只要有一个@Test注释,并按照您想要的顺序手动运行您想要的方法 比如说 @beforeclass login(){ open browser logi

我需要在循环中运行上述集合。例如,需要使用一个Id登录运行所有my@test用例,注销和in-loop需要使用diff Id再次登录,并需要执行相同的操作。 如何使用selenium实现这一点。 请给我一些建议


提前感谢。

我对Selenium和TestNG不太熟悉,但通常在单元TET中,您无法保证@Test methods的运行顺序

因此,只要有一个@Test注释,并按照您想要的顺序手动运行您想要的方法

比如说

@beforeclass 
login(){
open browser
login();
}

@test
test1(){

Action 1;
}

@test
test2(){

Action 2;
}

@afterclass
logout(){
}

使用@BeforeMethod,而不是使用任何循环。它将在每个新测试方法之前重置模拟

使用@BeforeMethod和@AfterMethod代替@BeforeClass和@AfterClass注释

@BeforeMethod-带注释的方法将在每次测试之前运行 方法

@AfterMethod-带注释的方法将在每次测试后运行 方法


查看一些基本教程

我宁愿使用testng.xml文件。它有助于您理解报告

Java代码

TestNG.xml


您可以为此使用@DataProvider。请从下面读

@Test
public void test() {
   login("username"); 
   test1();
   test2();
   test3();
   logout("username");       
   login("newusername"); 
   test1();
   test2();
   test3();
   logout("newusername");       
}
@BeforeMethod
public void driverSetup()
{
    // Driver setup code
}
@Test
public void loginTest1()
{
    // User Login Code
}
@Test
public void loginTest2()
{
    // User Login Code
}
@AfterMethod
public void driverSetup()
{
    // Driver Closeup code
}
public class demo {

    @BeforeClass
    @Parameters({ "username", "password" })
    public void login(String username, String password){
        System.out.print("login with "+username+" "+password);
    }

    @Test
    public void test1(){
        System.out.print("test1");
    }

    @Test
    public void test2(){
        System.out.print("test2");
    }

    @AfterClass
    public void logout(){
        System.out.print("logout");
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Regression" >
    <test name="AdminUser">
        <parameter name="username" value="gaurnag"/>
        <parameter name="password" value="shah" />
        <classes>
            <class name="demo"/>
        </classes>
    </test>

    <test name="StandardUser">
        <parameter name="username" value="standard"/>
        <parameter name="password" value="shah" />
        <classes>
            <class name="demo"/>
        </classes>
    </test>
</suite>
@BeforeClass
public void startbrowser(){
open browser
}

@Test(dataProvider="getData")
public void login(String username, String password){

enter_username(username);
enter_password(password);
click_on_submit

logout

}

@AfterClass
public void stop_browser(){

}
@DataProvider
public Object[][] getData()
{

Object[][] data = new Object[2][2];

// 1st row
data[0][0] ="user1";
data[0][1] = "test123";

// 2nd row
data[1][0] ="user2";
data[1][1] = "test123";

return data;
}