簡體   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