zoukankan      html  css  js  c++  java
  • TestNG-常用注解参数

    注解@Test标签


    package com.course.testng;
    
    import org.testng.annotations.Test;
    
    public class BasicAnnotation {
        @Test
        public void testCase01(){
            System.out.println("ddd");
        }
    }
    

    @Test:是最基本的注解,用来把方法标记为测试的一部分,是最基本的注解  

    注解@BeforeMethod和@AfterMethod标签


    @BeforeMethod
        public void beforeMethod(){
            System.out.println("在测试方法之前运行");
        }
    
    @AfterMethod
        public void afterMethod(){
            System.out.println("在测试方法之后");
        }

     @BeforeMethod 在每个方法之前运行;@AfterMethod 在每个方法之后运行

    注解@BeforeClass和@AfterClass标签


        @BeforeClass
        public void beforeClass(){
            System.out.println("在类之前");
        }
        @AfterClass
        public void afterClass(){
            System.out.println("在类运行之后");
        }

     @BeforeClass 在类之前运行;@AfterClass 在类之后运行

     注解@BeforeSuit和@AfterSuit标签


        @BeforeSuite
        public void beforeSuite(){
            System.out.println("在套件suit之前");
        }
        @AfterSuite
        public void afterSuite(){
            System.out.println("在套件suit之后");
        }  

    类在运行之前运行suit

    注解运行顺序总结:

    package com.course.testng;
    
    import org.testng.annotations.*;
    
    public class BasicAnnotation {
    
    
        @Test
        public void testCase01(){
            System.out.println("ddd");
        }
    
        @Test
        public void testCase02(){
            System.out.println("ddd2");
        }
    
        @BeforeMethod
        public void beforeMethod(){
            System.out.println("在测试方法之前运行");
        }
    
        @AfterMethod
        public void afterMethod(){
            System.out.println("在测试方法之后");
        }
    
        @BeforeClass
        public void beforeClass(){
            System.out.println("在类之前");
        }
        @AfterClass
        public void afterClass(){
            System.out.println("在类运行之后");
        }
    
        @BeforeSuite
        public void beforeSuite(){
            System.out.println("在套件suit之前");
        }
        @AfterSuite
        public void afterSuite(){
            System.out.println("在套件suit之后");
        }
    }
    

    运行结果:beforesuit->beforeclass->beforemethod->方法1->aftermethod->beforemethod->方法2->aftermethod->afterclass->aftersuit

    在套件suit之前
    在类之前
    在测试方法之前运行
    ddd
    在测试方法之后
    在测试方法之前运行
    ddd2
    在测试方法之后
    在类运行之后
    在套件suit之后
    

    忽略测试


        @Test(enabled = false)
        public void testCase02(){
            System.out.println("ddd2");
        }
    

    在标签@Test后面加关键字enabled = false,该方法就不被执行了

    组测试 


    组测试:方法分组

        @Test(groups = "server")
        public void testCase02() {
            System.out.println("server端测试方法1");
        }
    
        @Test(groups = "server")
        public void testCase03() {
            System.out.println("server端测试2");
        }
    
        @BeforeGroups("server")
        public void beforeGroups() {
            System.out.println("***这个是组运行之前的方法");
        }
    
        @AfterGroups("server")
        public void afterGroups() {
            System.out.println("这个是组运行之后的方法***");
        }
    1. 在注解@Test后加groups="组名" ,一个组的方法,都要加上
    2. 如果需要@BeforeGroups和@AfterGroups这两个注解,要在这两个注解后,加上指定的组名("组名")

    组测试:类分组

    1. 在每个类上方加注解@Test
    2. 编写对应的xml文件,其中可以指定运行全部,也可以指定运行某一个分组
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="suitename">
        <!--运行所有类-->
        <test name="runAll">
            <classes>
                <class name="com.course.testng.groups.Groups1"></class>
                <class name="com.course.testng.groups.Groups2"></class>
                <class name="com.course.testng.groups.Groups3"></class>
            </classes>
        </test>
        <!--运行指定的分组-->
        <test name="runGroup1">
            <groups>
                <run>
                    <include name="client"></include>
                </run>
            </groups>
            <classes>
                <class name="com.course.testng.groups.Groups1"></class>
                <class name="com.course.testng.groups.Groups2"></class>
            </classes>
        </test>
    
    </suite>

    异常测试


       //异常测试
        @Test(expectedExceptions = RuntimeException.class)
        public void testCase01() {
            System.out.println("Groups1-01");
            throw new RuntimeException();
        }
    

    @Test(expectedExceptions = 异常类),放在方法上

     依赖测试


    方法二依赖方法一:先执行方法一,如果方法一失败了,方法二就不执行了

        @Test
        public void testCase02() {
            System.out.println("Groups1-testCase02");
            throw new RuntimeException();
        }
    
        @Test(dependsOnMethods = {"testCase02"})
        public void testCase03() {
            System.out.println("方法三");
        }
    

    @Test(dependsOnMethods = {"被依赖的方法"})

     多线程测试


    一、使用xml文件实现 

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="threadSuiteName" parallel="methods" thread-count="2">
        <!--多线程的级别是method方法级别的:parallel="methods"-->
        <!--多线程的数量是2:thread-count="2"-->
        <!--
            tests级别:不同的test tag 下的用例,可以在不同的线程下执行;相同的test tag下的用例,只能在同一个线程中执行
            classes级别:不同的class tag 下的用例,可以在不同的线程下执行;相同的class tag下的用例,只能在同一个线程中执行
            methods级别:所有用例都可以在不同线程中执行
            thread-count:代表最大并发线程数
            xml:这种使用xml配置的多线程,不能指定线程池,只能在方法上指定线程池
        -->
        <test name="thread">
            <classes>
                <class name="com.course.testng.multiThread.Thread01"></class>
                <class name="com.course.testng.BasicAnnotation"></class>
            </classes>
        </test>
    </suite>

    超时测试


        @Test(timeOut = 3000) //在3000毫秒,期望得到响应值
        public void test01() throws InterruptedException {
            Thread.sleep(2000); //sleep了2000毫秒,在3000内有响应值,该用例通过
        }
    
        @Test(timeOut = 3000) //在3000毫秒,期望得到响应值
        public void test02() throws InterruptedException {
            Thread.sleep(3500); //3500毫秒之后,才响应,该用例报错
        }

    @Test(timeOut = 毫秒数) 表示期望多少毫秒内,取得响应值;如果没有,该用例就报错

  • 相关阅读:
    Codeforces 449D:Jzzhu and Numbers
    51nod 1040:最大公约数之和
    51nod 1179:最大的最大公约数
    51nod 1406:与查询
    51nod 1354:选数字
    51nod 1616:最小集合
    Codeforces:Colored Balls
    素性测试
    秒转换成年月日时分秒 和复制文本到剪贴板
    vue项目中获取cdn域名插件
  • 原文地址:https://www.cnblogs.com/starstarstar/p/11305733.html
Copyright © 2011-2022 走看看