繁体   English   中英

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

[英]How to run @beforeclass @test and @Afterclass cases in a loop using TestNG

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

@test
test1(){

Action 1;
}

@test
test2(){

Action 2;
}

@afterclass
logout(){
}

我需要循环运行以上设置。 例如,需要使用一个Id登录,请运行我的所有@test用例并注销,并且循环中需要使用diff Id重新登录,并需要执行相同的操作。 我如何使用硒做到这一点。 请给我一些想法。

提前致谢。

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

我对Selenium和TestNG不太熟悉,但是通常在单元测试中,您不能保证@Test方法的运行顺序。

因此,只有一个@Test批注,并以所需的顺序手动运行所需的方法。

例如

@Test
public void test() {
   login("username"); 
   test1();
   test2();
   test3();
   logout("username");       
   login("newusername"); 
   test1();
   test2();
   test3();
   logout("newusername");       
}

使用@BeforeMethod@AfterMethod代替@BeforeClass@AfterClass批注

@BeforeMethod注释的方法将在每个测试方法之前运行。

@AfterMethod注释的方法将在每个测试方法之后运行。

@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
}

查看一些基本教程https://www.tutorialspoint.com/testng/testng_basic_annotations.htm

我宁愿使用testng.xml文件。 它可以帮助您了解报告

Java代码

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");
    }
}

TestNG.xml

<?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>

您可以为此使用@DataProvider。 请从官方网站阅读

@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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM