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 = 毫秒数) 表示期望多少毫秒内,取得响应值;如果没有,该用例就报错

  • 相关阅读:
    Leetcode Binary Tree Level Order Traversal
    Leetcode Symmetric Tree
    Leetcode Same Tree
    Leetcode Unique Paths
    Leetcode Populating Next Right Pointers in Each Node
    Leetcode Maximum Depth of Binary Tree
    Leetcode Minimum Path Sum
    Leetcode Merge Two Sorted Lists
    Leetcode Climbing Stairs
    Leetcode Triangle
  • 原文地址:https://www.cnblogs.com/starstarstar/p/11305733.html
Copyright © 2011-2022 走看看