TestNG忽略测试、分组、异常测试、依赖测试、参数化
忽略测试
添加属性@Test(enabled = false )
package com.course.testng;
import org.testng.annotations.Test;
public class IgnoreTest {
@Test(enabled = false)
public void ignore1(){
System.out.print("第一个,执行");
}
@Test
public void ignore2(){
System.out.print("第二个,执行");
}
}
组测试
如何分组
分组:@Test(groups="组名")
package com.course.testng.groups;
import org.testng.annotations.AfterGroups;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.Test;
public class GroupOnMethod {
@Test(groups = "server")
public void test1() {
System.out.println("这是服务端测试方法1");
}
@Test(groups = "server")
public void test2() {
System.out.println("这是服务端测试方法2");
}
@Test(groups = "client")
public void test3() {
System.out.println("这是客户端测试方法3");
}
@Test(groups = "client")
public void test4() {
System.out.println("这是客户端测试方法4");
}
@BeforeGroups("server")
public void beforeClientGroups(){
System.out.println("-----前------");
}
@AfterGroups(groups = "server")
public void afterClientGroups(){
System.out.println("-----后------");
}
}
套件中组的使用
直接给类增加Test,增加组名
package com.course.testng.groups;
import org.testng.annotations.Test;
@Test(groups = "stu")
public class GroupClass1 {
public void stu_one() {
System.out.println("执行方法:class1-stu_one");
}
public void stu_two() {
System.out.println("执行方法:class1-stu_two");
}
}
package com.course.testng.groups;
import org.testng.annotations.Test;
@Test(groups = "teacher")
public class GroupClass3 {
public void teacher1(){
System.out.println("执行:teacher1");
}
public void teacher2(){
System.out.println("执行:teacher2");
}
}
xml文件中添加:groups,run,include标签
<?xml version="1.0" encoding="CESU-8" ?>
<suite name="suitename">
<test name="runall">
<classes>
<class name="com.course.testng.groups.GroupClass1"/>
<class name="com.course.testng.groups.GroupClass2"/>
<class name="com.course.testng.groups.GroupClass3"/>
</classes>
</test>
<test name="runstu">
<groups>
<run>
<include name="stu"/>
</run>
</groups>
<classes>
<class name="com.course.testng.groups.GroupClass1"/>
<class name="com.course.testng.groups.GroupClass2"/>
<class name="com.course.testng.groups.GroupClass3"/>
</classes>
</test>
</suite>
异常测试
什么时候会用到异常测试:
在我们期望结果为某个异常的时候
比如:我们传入某些不合法的参数,抛出了异常(也就是说预期结果就是异常)
package com.course.testng;
import org.testng.annotations.Test;
public class ExcepctedException {
@Test(expectedExceptions = RuntimeException.class)
public void runTimeFaild(){
System.out.println("这是一个失败的异常测试");
}
@Test(expectedExceptions = RuntimeException.class)
public void runTimeSuccess(){
System.out.println("这是一个成功的异常测试");
throw new RuntimeException();
}
}
依赖测试
使用Test的属性:dependsonmethods
作用:前置条件
package com.course.testng;
import org.testng.annotations.Test;
public class DependTest {
@Test
public void test1(){
System.out.println("test1 run");
throw new RuntimeException();
}
@Test(dependsOnMethods = {"test1"})
public void test2(){
System.out.println("test2 run");
}
}
参数化测试--注解Parameters\DataProvider
xml文件参数化
使用注解:@Parameters
package com.course.testng.parameter;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParameterTest {
@Test
@Parameters({"name","age"})
public void ParameterTest1(String name,int age){
System.out.println("name = "+name+",年龄:"+age);
}
}
xml传参:
<?xml version="1.0" encoding="CESU-8" ?>
<suite name="sd">
<test name="par">
<classes>
<parameter name="name" value="hanzu"/>
<parameter name="age" value="12"/>
<class name="com.course.testng.parameter.ParameterTest"/>
</classes>
</test>
</suite>
DataProvider参数化
使用注解Test属性:dataProvider进去参数
使用注解DataProvider定义参数
package com.course.testng.parameter;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
public class DataProviderTest {
//直接传输参数
@Test(dataProvider = "data")
public void dataTest(String name,int age){
System.out.println("name = "+name+",年龄:"+age);
}
@DataProvider(name = "data")
public Object [] [] providerData(){
Object [] [] o = new Object[][]{
{"hanzhenyu",10},{"wangxue",11}
};
return o;
}
//通过接口传输参数
@Test(dataProvider = "methodData")
public void test1(String name,int age){
System.out.println("test1方法:name = "+name+",年龄:"+age);
}
@Test(dataProvider = "methodData")
public void test2(String name,int age){
System.out.println("test2方法:name = "+name+",年龄:"+age);
}
@DataProvider(name = "methodData")
public Object[][] methodDataTest(Method method){
Object[][] result = null;
if(method.getName().equals("test1")){
result = new Object[][]{
{"test1-zhang",10},{"test1-li",19}
};
}else if(method.getName().equals("test2")){
result = new Object[][]{
{"test2-hu",20},{"test2-cai",29}
};
}
return result;
}
}