注解@Test标签
package com.course.testng;
import org.testng.annotations.Test;
public class BasicAnnotation {
@Test
public void testCase01(){
System.out.println("ddd");
}
}
@Test:是最基本的注解,用来把方法标记为测试的一部分,是最基本的注解
注解@BeforeMethod和@AfterMethod标签
@BeforeMethod
public void beforeMethod(){
System.out.println("在测试方法之前运行");
}
@AfterMethod
public void afterMethod(){
System.out.println("在测试方法之后");
}
@BeforeMethod 在每个方法之前运行;@AfterMethod 在每个方法之后运行
注解@BeforeClass和@AfterClass标签
@BeforeClass
public void beforeClass(){
System.out.println("在类之前");
}
@AfterClass
public void afterClass(){
System.out.println("在类运行之后");
}
@BeforeClass 在类之前运行;@AfterClass 在类之后运行
注解@BeforeSuit和@AfterSuit标签
@BeforeSuite
public void beforeSuite(){
System.out.println("在套件suit之前");
}
@AfterSuite
public void afterSuite(){
System.out.println("在套件suit之后");
}
类在运行之前运行suit
注解运行顺序总结:
package com.course.testng;
import org.testng.annotations.*;
public class BasicAnnotation {
@Test
public void testCase01(){
System.out.println("ddd");
}
@Test
public void testCase02(){
System.out.println("ddd2");
}
@BeforeMethod
public void beforeMethod(){
System.out.println("在测试方法之前运行");
}
@AfterMethod
public void afterMethod(){
System.out.println("在测试方法之后");
}
@BeforeClass
public void beforeClass(){
System.out.println("在类之前");
}
@AfterClass
public void afterClass(){
System.out.println("在类运行之后");
}
@BeforeSuite
public void beforeSuite(){
System.out.println("在套件suit之前");
}
@AfterSuite
public void afterSuite(){
System.out.println("在套件suit之后");
}
}
运行结果:beforesuit->beforeclass->beforemethod->方法1->aftermethod->beforemethod->方法2->aftermethod->afterclass->aftersuit
在套件suit之前
在类之前
在测试方法之前运行
ddd
在测试方法之后
在测试方法之前运行
ddd2
在测试方法之后
在类运行之后
在套件suit之后
忽略测试
@Test(enabled = false)
public void testCase02(){
System.out.println("ddd2");
}
在标签@Test后面加关键字enabled = false,该方法就不被执行了
组测试
组测试:方法分组
@Test(groups = "server")
public void testCase02() {
System.out.println("server端测试方法1");
}
@Test(groups = "server")
public void testCase03() {
System.out.println("server端测试2");
}
@BeforeGroups("server")
public void beforeGroups() {
System.out.println("***这个是组运行之前的方法");
}
@AfterGroups("server")
public void afterGroups() {
System.out.println("这个是组运行之后的方法***");
}
- 在注解@Test后加groups="组名" ,一个组的方法,都要加上
- 如果需要@BeforeGroups和@AfterGroups这两个注解,要在这两个注解后,加上指定的组名("组名")
组测试:类分组
- 在每个类上方加注解@Test
- 编写对应的xml文件,其中可以指定运行全部,也可以指定运行某一个分组
xml version="1.0" encoding="UTF-8" ?> DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="suitename"> <test name="runAll"> <classes> <class name="com.course.testng.groups.Groups1">class> <class name="com.course.testng.groups.Groups2">class> <class name="com.course.testng.groups.Groups3">class> classes> test> <test name="runGroup1"> <groups> <run> <include name="client">include> run> groups> <classes> <class name="com.course.testng.groups.Groups1">class> <class name="com.course.testng.groups.Groups2">class> classes> test> suite>
异常测试
//异常测试
@Test(expectedExceptions = RuntimeException.class)
public void testCase01() {
System.out.println("Groups1-01");
throw new RuntimeException();
}
@Test(expectedExceptions = 异常类),放在方法上
依赖测试
方法二依赖方法一:先执行方法一,如果方法一失败了,方法二就不执行了
@Test
public void testCase02() {
System.out.println("Groups1-testCase02");
throw new RuntimeException();
}
@Test(dependsOnMethods = {"testCase02"})
public void testCase03() {
System.out.println("方法三");
}
@Test(dependsOnMethods = {"被依赖的方法"})
多线程测试
一、使用xml文件实现
xml version="1.0" encoding="UTF-8" ?> DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="threadSuiteName" parallel="methods" thread-count="2"> <test name="thread"> <classes> <class name="com.course.testng.multiThread.Thread01">class> <class name="com.course.testng.BasicAnnotation">class> classes> test> suite>
超时测试
@Test(timeOut = 3000) //在3000毫秒,期望得到响应值 public void test01() throws InterruptedException { Thread.sleep(2000); //sleep了2000毫秒,在3000内有响应值,该用例通过 } @Test(timeOut = 3000) //在3000毫秒,期望得到响应值 public void test02() throws InterruptedException { Thread.sleep(3500); //3500毫秒之后,才响应,该用例报错 }
@Test(timeOut = 毫秒数) 表示期望多少毫秒内,取得响应值;如果没有,该用例就报错