1、常用的註解
使用testng需要在pom文件中引入的依賴
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.11</version>
<scope>compile</scope>
</dependency>
- @Test 表示這是一個測試方法
- beforeSuit:測試套件在beforeClass之前執行
beforeClass:這是在類執行之前執行
beforeMethod:這是在方法執行之前運行的
Test:這是第一個測試方法
afterMethod:這是在方法執行之後運行的
beforeMethod:這是在方法執行之前運行的
Test這是第二個測試方法
afterMethod:這是在方法執行之後運行的
afterClass:這是在類執行之後執行
afterSuit:測試套件在afterClass之後執行
2、套件測試testsuit
1、最重要創建一個xml文件名字隨意,最後運行的時候運行的是這個文件,文件就是簡單的xml文件;
<?xml version="1.0" encoding="utf-8" ?>
<!--執行的是suit中的內容,並且是按照test的順序-->
<suite name="test">
<test name="login">
<!-- 執行的類按照順序執行,並且其中包含同一個SuitConfig-->
<classes>
<class name ="com.course.testng.suit.SuitConfig"/>
<class name ="com.course.testng.suit.LoginTest"/>
</classes>
</test>
<test name="pay">
<classes>
<class name ="com.course.testng.suit.SuitConfig"/>
<class name ="com.course.testng.suit.PayTest"/>
</classes>
</test>
</suite>
SuitConfig代碼
public class SuitConfig {
@BeforeSuite
public void beforeSuit(){
System.out.println("before Suit運行了");
}
@AfterSuite
public void afterSuit(){
System.out.println("after Suit運行了");
}
@BeforeTest
public void beforeTest(){
System.out.println("beforeTest執行");
}
@AfterTest
public void afterTest(){
System.out.println("afterTest執行");
}
}
兩外兩個就是一個@test的方法
執行結果
3、忽略測試ignore
4、testng組測試
1、把方法級別分組測試,只針對某些相同分組方法生效。例子如圖
public class GroupsOnMethoud {
public class GroupsOnMethoud {
@Test(**groups = "server"**)
public void test1(){
System.out.println("這是服務端組的測試方111");
}
@Test(groups = "server")
public void test2(){
System.out.println("這是服務端組的測試方2222");
}
@Test(groups = "client")
public void test3(){
System.out.println("這是客戶端組的測試方333");
}
**@BeforeGroups("server")**
public void beforeGrouponserver(){
System.out.println("在服務端組運行之前運行");
}
@AfterGroups("server")
public void afterGrouponserver(){
System.out.println("在服務端組運行之後運行");
}
}
在服務端組運行之前運行
這是服務端組的測試方111
這是服務端組的測試方2222
在服務端組運行之後運行
這是客戶端組的測試方333
2、類分組測試,把類文件分組測試
創建幾個類在類中標註是哪些分組@Test(groups = “stu”)
然後創建xml文件控制執行哪些分組也就是這些分組下的類
**@Test(groups = "stu")**
public class GroupOnclass1 {
public void stu1(){
System.out.println("GroupOnclass1中的stu1");
}
public void stu2(){
System.out.println("GroupOnclass1中的stu2");
}
}
**@Test(groups = "teacher")**
public class GroupOnclass3 {
public void teacher1(){
System.out.println("GroupOnclass3中的teacher1");
}
public void teacher2(){
System.out.println("GroupOnclass3中的teacher2");
}
}
**<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >**
<suite name="suitname">
<test name="onlyRunStu">
**<groups>
<run>
<include name="stu"/>
</run>
</groups>**
<classes>
<class name="com.course.testng.groups.GroupOnclass1" />
<class name="com.course.testng.groups.GroupOnclass2" />
<class name="com.course.testng.groups.GroupOnclass3" />
</classes>
</test>
</suite>
5、testng異常測試
什麼時候用到異常測試?就是當我們的期望結果是一個異常的時候
6、依賴測試
如果依賴的方法異常了則該方法就沒辦法執行了
7、傳參測試
1、首先創建一個方法使用參數,然後創建xml文件爲參數傳值
2、使用dataaprovider屬性傳值如圖
dataaprovider支持根據方法來進行傳參
8、多線程測試
1、使用註解的方式實現,如果參數不與其他方法關聯建議使用,如果關聯不建議使用
public class MulitThreadAnnotion {
//invocationCount是線程數,其中默認的線程池是1;threadPoolSize是指定的線程池數
@Test(invocationCount = 10,threadPoolSize = 3)
public void test1(){
System.out.println("線程執行");
System.out.printf("線程id:%s%n",Thread.currentThread().getId());
}
}
2、使用xml實現多線程
首先創建需要測試的方法,然後創建控制線程的xml文件
9、超時測試timeout
響應超過了設置的時間就會拋出異常