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");
}
}
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");
}
}
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”来配置
默认是强制依赖,就是出现异常就终止。。。。程序跳出
- public class TestngDependOnGroups {
- @Test(groups = { "init" })
- public void serverStartedOk() {
- System.out.println("serverStartedOk.....");
- }
- @Test(groups = { "init2" })
- public void initEnvironment() {
- System.out.println("initEnvironment.....");
- throw new RuntimeException("unexpected fail......");
- }
- @Test(dependsOnGroups = { "init.*" })
- public void method1() {
- System.err.println("I am over here.....");
- }
- }
如果添加, alwaysRun = true则变为顺序依赖,哪怕被依赖出现异常也继续执行
- @Test(dependsOnGroups = { "init.*" }, alwaysRun = true)
- public void method1() {
- System.err.println("I am over here.....");
- }
<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参数化
本文详细介绍了TestNG如何按顺序执行测试用例,包括优先级法、字母排序法以及通过xml配置控制。同时,文章讨论了TestNG的异常测试功能,展示了如何捕获特定类型的异常。此外,还讲解了TestNG的测试分组机制,并通过实例展示了dependsOnGroups的用法,用于控制测试方法的依赖执行。
490

被折叠的 条评论
为什么被折叠?



