TestNG使用方法总结

本文详细介绍了TestNG如何按顺序执行测试用例,包括优先级法、字母排序法以及通过xml配置控制。同时,文章讨论了TestNG的异常测试功能,展示了如何捕获特定类型的异常。此外,还讲解了TestNG的测试分组机制,并通过实例展示了dependsOnGroups的用法,用于控制测试方法的依赖执行。

1、TestNG按顺序执行Case

1)优先级法:@Test(Priority=?)优先级设置的值越小,则越优先。

2)字母排序法:由@Test的方法名的首字母由a~~z。

3)在xml中设置标识 preserve-order可以控制类和方法执行顺序,其顺序就是xml中指定的顺序。

<testname="test12" preserve-order="true">

2、TestNG异常测试

@Test(expectedExceptions=ArithmeticException.class)

@Test(expectedExceptions = IllegalArgumentException.class

预期该方法中会出现这样的异常,一旦运行的时候出现异常则认为是测试通过,获取到了该异常不会报失败


3、TestNG测试分组

1) 在方法上的分组
package TankLearn2.Learn;


import org.testng.annotations.Test;


public class GroupTest {
    
   
@Test(groups = {"selenium-test"})
    public void testLogin(){
        System.out.println("this is test login");
    }
    
 
  @Test(groups = {"functiontest"})
    public void testOpenPage(){
        System.out.println("this is test Open Page");
    }
}
然后在testng.xml中 按组执行测试用例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suitename="Suite1">  
<testname="test1"> 
<groups>  
<run>  
<includename="selenium-test"/>  
</run>  
</groups>

<classes>
<class name="TankLearn2.Learn.GroupTest" />
</classes>
</test></suite>
还有一种all的情况?
还有兼容的情况@Test(groups = {"functiontest","selenium-test"})
2) 在类上的分组
package com.yiibai;


import org.testng.annotations.Test;


@Test(groups = "selenium-test")
public class TestSelenium {


    public void runSelenium() {
        System.out.println("runSelenium()");
    }


    public void runSelenium1() {
        System.out.println("runSelenium()1");
    }


}

创建一个测试类:testng.xml ,其代码如下所示
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" ><suitename="TestAll"><!-- Run test method on group "selenium" only --><testname="selenium"><groups><run><includename="selenium-test"/></run></groups><classes><classname="com.yiibai.TestSelenium"/><classname="com.yiibai.TestGroup"/></classes></test></suite>
总结:分组测试其实可以控制哪部分方法和类执行测试,主要通过xxx.xml进行配置和控制
<groups><run><includename="selenium-test"/></run></groups>

<classes><classname="com.yiibai.TestSelenium"/><classname="com.yiibai.TestGroup"/></classes>代表类(com.yiibai.TestSelenium,com.yiibai.TestGroup)中带有@Test(groups = "selenium-test")所有类和方法都要执行。

4、TestNG依赖测试
1)dependsOnMethods
import org.testng.annotations.Test;


public class TestngDependencies {
@Test
public void testmethod(){
System.out.println("我是否为第一个执行");
}
  @Test
  public voidserverstartok(){
 System.err.println("method1 runs after me......"); 
  }
  @Test(dependsOnMethods = {"serverstartok"})
  public void method1(){
 System.out.println("depens on serverstartok.");
 
  }
}
2)dependsOnGroups
package com.yiibai;


import org.testng.Assert;
import org.testng.annotations.Test;

public class DependencyTestUsingAnnotation {
String message = "Manisha";
MessageUtil messageUtil = new MessageUtil(message);

@Test(groups = { "init1" })
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
message = "Manisha";
Assert.assertEquals(message, messageUtil.printMessage());
}

@Test(groups = { "init1" }, dependsOnGroups = { "init2" }, alwaysRun = true)
//执行init1组的时候,要先执行init2组的东西(被依赖)
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Manisha";
Assert.assertEquals(message, messageUtil.salutationMessage());
}

@Test(groups = { "init2" })
public void initEnvironmentTest() {
System.out.println("This is initEnvironmentTest");
}
}
-------------------------------------------------------------------------------------------------------
<test verbose="2" name="TestngDependOnGroups">
<groups>
<run>
<include name="init1" />
</run>
</groups>
-----------------groups用来控制分组的,执行所有groups=init1-----------------------
<classes>
<class name="com.yiibai.DependencyTestUsingAnnotation">
</class>
</classes>
</test>
----------------
强制依赖:如果被依赖的某一个方法发生了异常,那么之后的方法都不会被执行(默认)
顺序依赖:无论被依赖的方法是否出现异常,后续的方法都会被执行,通过alwaysRun=“true”来配置

默认是强制依赖,就是出现异常就终止。。。。程序跳出
  1. public class TestngDependOnGroups {  
  2.     @Test(groups = { "init" })  
  3.     public void serverStartedOk() {  
  4.         System.out.println("serverStartedOk.....");  
  5.     }  
  6.   
  7.     @Test(groups = { "init2" })  
  8.     public void initEnvironment() {  
  9.   
  10.         System.out.println("initEnvironment.....");  
  11.         throw new RuntimeException("unexpected fail......");  
  12.     }  
  13.   
  14.     @Test(dependsOnGroups = { "init.*" })  
  15.     public void method1() {  
  16.         System.err.println("I am over here.....");  
  17.     }  
  18. }  
如果添加, alwaysRun = true则变为顺序依赖,哪怕被依赖出现异常也继续执行
  1.   @Test(dependsOnGroups = { "init.*" }, alwaysRun = true)  
  2.     public void method1() {  
  3.         System.err.println("I am over here.....");  
  4.     }  
<classes>
<class name="com.yiibai.TestngDependOnGroups ">
</class>
</classes>

注意:单独执行组的时候,dependsOnGrops @Test(dependsOnGroups = { "init.*" })  的不会执行,只有@Test(groups = { "init1" }, dependsOnGroups = { "init2" }, alwaysRun = true)在执行组init1的时候才能执行。

5、TestNG忽略测试

有时候测试用例还没准备好, 可以给测试用例加上@Test(enable = false),  来禁用此测试用例
package TankLearn2.Learn;import org.testng.annotations.Test;publicclass TesgNGIgnore {@Test(enabled =false)publicvoid testIgnore(){ System.out.println("This test case will ignore"); }}

6、TestNG参数化

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值