![](/img/trans.png)
[英]TestNG Re run test on failure, not running BeforeClass AfterClass methods
[英]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.