testNG常见测试方法_idea_java

  1. testNG忽略测试,跑测试用例时忽略暂时不执行的方法
    在@Test注释后添加false属性,不手动添加时默认是true
package com.ngtest.suite;

import org.testng.annotations.Test;

public class ignoreTest {
    @Test //有test标签一定会被测试到,默认的属性是true
    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

  1. testNG 多线程测试-xml文件实现,用来测试多线程运行的开发代码,没有关联的用例可以使用多线程减少执行时间
 //.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() { //Thread.currentThread().getId()此方法打印测试方法的线程的ID
        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)//单位是毫秒制,是3s
    public void timeOutSuccess() throws InterruptedException {
        Thread.sleep(2000); //实际上功能2s可以完成,设置的超时测试进行等待的3s,用例执行用了2s
                           //测试成功
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值