- testNG忽略测试,跑测试用例时忽略暂时不执行的方法
在@Test注释后添加false属性,不手动添加时默认是true
package com.ngtest.suite;
import org.testng.annotations.Test;
public class ignoreTest {
@Test
public void ignore1(){
System.out.println("ignore1 执行");
}
@Test(enabled = false)
public void ignore2(){
System.out.println("ignore2 执行");
}
}
运行结果为:ignore1 执行
2.testNG组测试:方法分组归类测试 在@Test后添加groups的属性
package com.ngtest.groups;
import org.testng.annotations.AfterGroups;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.Test;
public class GroupsOnMethod {
@Test(groups = "server")
public void test01(){
System.out.println("这是服务端组的测试方法111");
}
@Test(groups = "server")
public void test02(){
System.out.println("这是服务端组的测试方法222");
}
@Test(groups = "client")
public void test03(){
System.out.println("这是客户端组的测试方法333");
}
@Test(groups = "client")
public void test04(){
System.out.println("这是客户端组的测试方法444");
}
@BeforeGroups("server")
public void beforeGroupsOnServer(){
System.out.println("这是服务端组运行之前运行的方法");
}
@AfterGroups("server")
public void afterGroupsOnServer(){
System.out.println("这是服务端组运行之后运行的方法");
}
@BeforeGroups("client")
public void beforeGroupsOnClient(){
System.out.println("这是客户端组运行之前运行的方法");
}
@AfterGroups("client")
public void afterGroupsOnClient(){
System.out.println("这是客户端组运行之后运行的方法");
}
}
3.testNG异常测试 加异常属性:expectedExceptions = RuntimeException.class
package com.ngtest.suite;
import org.testng.annotations.Test;
public class ExceptedException {
@Test(expectedExceptions = RuntimeException.class)
public void runTimeExceptionSuccess(){
System.out.println("这是我的异常测试");
throw new RuntimeException();
}
}
运行结果:这是我的异常测试
4.testNG依赖测试:就是我本次测试方法2依赖于其他方法1,就是方法1先执行,然后才可以执行方法2
package com.ngtest.suite;
import org.testng.annotations.Test;
public class Depend {
@Test
public void test1(){
System.out.println("test1 run");
}
@Test(dependsOnMethods = {"test1"})
public void test2(){
System.out.println("test2 run");
}
}
运行test2,结果为:test1 run
test2 run
在依赖测试时,当被依赖的方法1出现异常失败了,方法2就会被忽略,使用场景:比如说买东西,得先登录账号,如果登录失败了就无法买东西了
4.testNG xml文件传参进行参数化测试 @Parameters 注解 需要在resources里新建parameter.xml配置项,进行传参,数据来源于xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<suite name="parameter">
<test name ="param">
<classes>
<parameter name ="name" value="zhangsan"/>
<parameter name ="age" value="10"/>
<class name ="com.ngtest.Paramter.parameterTest"/>
</classes>
</test>
</suite>
package com.ngtest.Paramter;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class parameterTest {
@Test
@Parameters({"name","age"})
public void paramTest1(String name,int age){
System.out.println("name=" + name + "; age =" + age);
}
}
运行结果:name=zhangsan; age =10
- testNG 多线程测试-xml文件实现,用来测试多线程运行的开发代码,没有关联的用例可以使用多线程减少执行时间
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<!--suite必须有name-->
<suite name="thread" parallel="methods" thread-count="2">
<!--
tests级别:不同的test标签(tag)下的用例可以在不同的线程下执行
相同的test标签(tag)下的用例只能在同一个线程中去执行
methods级别:所有用例都可以在不同的线程下去执行
parallel设置线程级别,可以是parallel="methods",parallel="tests",parallel="classes"
parallel="methods" 的意思是我的多线程是方法级别的
thread-count: 代表了最大并发线程数
classes级别:相同的classes标签下的用例在同一个线程中执行
不同的classes标签下的用例可以在不同的线程下执行
xml文件配置这种方式不能指定线程池,只有方法上才可以指定线程池
-->
<test name="threadTest">
<classes>
<class name="com.ngtest.multiThread.multiThreadOnXml"/>
</classes>
</test>
<test name="threadTest2">
<classes>
<class name="com.ngtest.multiThread.multiThreadOnXml"/>
</classes>
</test>
</suite>
测试主程序:multiThreadOnXml.java
package com.ngtest.multiThread;
import org.testng.annotations.Test;
public class multiThreadOnXml {
@Test
public void test1() {
System.out.printf("Thread Id : %s%n",Thread.currentThread().getId());
}
@Test
public void test2() {
System.out.printf("Thread Id : %s%n",Thread.currentThread().getId());
}
@Test
public void test3() {
System.out.printf("Thread Id : %s%n",Thread.currentThread().getId());
}
}
6.超时测试
package com.ngtest.suite;
import org.testng.annotations.Test;
public class timeOutTest {
@Test(timeOut = 3000)
public void timeOutSuccess() throws InterruptedException {
Thread.sleep(2000);
}
}
|