📜  TestNG注释属性

📅  最后修改于: 2021-01-11 12:07:59             🧑  作者: Mango

TestNG注释属性

在用TestNG编写测试用例时,您需要在测试方法之前提及@Test批注。

@Test
public void testcase1()
{ 
   System.out.println("This is testcase1");
} 

在上面的代码中,我们在测试方法之前指定了@Test批注,即testcase1()。

我们还可以在@Test批注中显式指定属性。测试属性是特定于测试的,并且在@Test注释的右侧指定。

@Test(attribute="value")
public void testcase2()
{
 System.out.println("This is testcase2");
} 

一些常见属性如下所述:

  • 描述
  • 超时
  • 优先
  • 取决于方法
  • 已启用
  • 团体

描述

它是附加到@Test注释的字符串,该注释描述有关测试的信息。

让我们通过一个例子来理解。

package com.javatpoint;
import org.testng.annotations.Test;
public class Class1 
{
    
@Test(description="This is testcase1")
public void testcase1()
{
System.out.println("HR");
}
@Test(description="This is testcase2")
public void testcase2()
{
System.out.println("Software Developer");
}
@Test(description="This is testcase3")
public void testcase3()
{
System.out.println("QA Analyst");
}
}

在上面的代码中,我们在每个测试中都添加了description属性。 “ description ”属性提供有关测试的信息。

取决于方法

当第二种测试方法要依赖于第一种测试方法时,则可以通过使用“ dependOnMethods ”属性来实现。如果第一个测试方法失败,则依赖方法将不运行第一个测试方法,即第二个测试方法。

让我们通过一个例子来理解。

第一种情况:在参数中传递单个值时。

package com.javatpoint;
import org.testng.annotations.Test;
public class Class1 
{
@Test
public void WebStudentLogin()
{
System.out.println("Student login through web");
}
@Test
public void MobileStudentLogin()
{
System.out.println("Student login through mobile");
}
@Test(dependsOnMethods= {"WebStudentLogin"})
public void APIStudentLogin()
{
System.out.println("Student login through API");
}
}

我们知道TestNG按字母顺序执行测试方法,因此在上述程序中,APIStudentLogin()将首先执行。但是,我们希望WebStudentLogin()方法在执行APIStudentLogin()方法之前执行,因此只能通过“ dependsOnMethods”属性来实现。在上面的程序中,我们在APIStudentLogin()测试方法中指定了“ dependsOnMethods”属性,其值为“ WebStudentLogin”,这意味着WebStudentLogin()方法将在APIStudentLogin()方法之前执行。

输出量

在上面的输出中,由于TestNG以字母顺序运行测试方法,因此MobileStudentLogin()在WebStudentLogin()方法之前运行。

第二种情况:在参数中传递多个值时。

package com.javatpoint;
import org.testng.annotations.Test;
public class Depends_On_Groups
{
 @Test(dependsOnMethods= {"testcase3","testcase2"})
 public void testcase1()
 {
     System.out.println("This is test case1");
 }
 @Test
 public void testcase2()
 {
     System.out.println("This is test case2");
 }
 @Test
 public void testcase3()
 {
     System.out.println("This is test case3");
 }
 
}

在上面的代码中,testcase1()依赖于两个方法,即testcase2()和testcase3(),这意味着这两个方法将在testcase1()之前执行。

输出量

优先

如果未指定'priority'属性,则TestNG将以字母顺序运行测试用例。优先级确定测试用例的执行顺序。优先级可以保留-5000到5000之间的整数值。设置优先级后,最低优先级的测试用例将首先运行,最高优先级的测试用例将最后执行。假设我们有三个测试用例,它们的优先级值为-5000、0、15,那么执行的顺序将是0,15,5000。如果未指定优先级,则默认优先级将为0。

让我们通过一个例子来理解。

package com.javatpoint;
import org.testng.annotations.Test;
public class Fruits
{
@Test
public void mango()
{
System.out.println("I am Mango");
}
@Test(priority=2)
public void apple()
{
System.out.println("I am Apple");
}
@Test(priority=1)
public void watermelon()
{
System.out.println("I am Watermelon");
}
}

在上面的代码中,mango()测试方法的默认优先级为0,因此将首先执行它。西瓜()测试方法将在芒果()方法之后运行,因为西瓜()测试方法的优先级为2。苹果()测试方法具有最高优先级,因此将在最后执行。

输出量

已启用

“ enabled”属性包含布尔值。默认情况下,其值为true。如果要跳过某些测试方法,则需要显式指定' false '值。

让我们通过一个例子来理解。

package com.javatpoint;
import org.testng.annotations.Test;
public class Programming_languages 
{
@Test
public void c_language()
{
System.out.println("C language");
}
@Test(enabled=false)
public void jira()
{
System.out.println("JIRA is a testing tool");
}
@Test
public void java()
{
System.out.println("JAVA language");
}
}

在上面的代码中,jira()测试方法中enabled属性的值是false,因此将不会调用此方法。

输出量

团体

'groups'属性用于对属于同一功能的不同测试用例进行分组。

让我们通过一个例子来理解。

package com.javatpoint;
import org.testng.annotations.Test;
public class Software_Company
{
@Test(groups= {"software company"})
public void infosys()
{
System.out.println("Infosys");
}
@Test
public void technip()
{
System.out.println("Technip India Ltd");
}
@Test(groups= {"software company"})
public void wipro()
{
System.out.println("Wipro");
}
}

testng.xml













 
 

输出量

超时

如果其中一个测试用例花费的时间很长,而其他测试用例则失败了。为了克服这种情况,您需要将测试用例标记为失败,以避免其他测试用例失败。 timeOut是提供给测试用例以完全执行其测试用例的时间段。

让我们通过一个例子来理解。

package com.javatpoint;
import org.testng.annotations.Test;
public class Timeout_program 
{
@Test(timeOut=200)
public void testcase1() throws InterruptedException
{
Thread.sleep(500);
System.out.println("This is testcase1");
}
@Test  
public void testcaes2()
{
System.out.println("This is testcase2");
    }
@Test
public void testcase3()
{
System.out.println("This is testcase3");
}
}

在上面的代码中,在testcase1()方法内部,我们具有Thread.sleep(500),这意味着testcase1()方法将在500毫秒后执行,但是我们提供的timeOUT属性值为200意味着testcase1() )将在200毫秒后失败。

testng.xml