testng -注解之@BeforeSuite、@AfterSuite

一、基本用法

suite >class>method

@BeforeSuite:测试套件前运行,一个测试套件中可以包含多个测试类

@AfterSuite:测试套件后运行

package com.test.finance.testcase;

import org.testng.annotations.*;

public class Testc {
    
    @BeforeSuite
    public void beforesuite(){
        System.out.println("beforesuite运行");
    }
    @AfterSuite
    public void aftersuite(){
        System.out.println("aftersuite运行");
    }

    @BeforeClass
    public void beforeclass(){
        System.out.println("beforeclass运行");
    }
    @AfterClass
    public void afterclass(){
        System.out.println("afterclass运行");
    }

    @BeforeMethod
    public void beforemethod(){
        System.out.println("beforemethod运行");
    }
    @AfterMethod
    public void aftermethod(){
        System.out.println("aftermethod运行");
    }

    @Test
    public void testc_1(){
        System.out.println("testc_1运行");
    }
    @Test
    public void testc_2(){
        System.out.println("testc_2运行");
    }
}

=======结果=====
beforesuite运行

  beforeclass运行

    beforemethod运行

      testc_1运行

    aftermethod运行



    beforemethod运行
      testc_2运行

    aftermethod运行

  afterclass运行

aftersuite运行

二、如何实现@BeforeSuite/@AfterSuite在多个测试类前后运行一次??

目前了解到,testng不能想pytest只需要在一个根目录下的conftest.py文件中设置前置fixture即可实现多个文件公用一个前置

testng实现方式:写一个BaseTest.class类,里面编写@BeforeSuite、@AfterSuite测试方法,用其他的测试类继承BaseTest.class类

目录结构:

代码编写:

/**
*基础类中包含@BeforeSuite、@AfterSuite、@BeforeClass、@AfterClass
*/

public class BaseTestcase {
    @BeforeSuite
    public  void beforeSuite(){
        System.out.println("执行beforeSuite");
    }

    @AfterSuite
    public void afterSuite(){
        System.out.println("执行aftersuite");
    }

    @BeforeClass
    public void beforeClass(){
        System.out.println("执行beforeclass");
    }
    @AfterClass
    public void afterClass(){
        System.out.println("执行afterclass");
    }
}

/**
*测试类Testa extends BaseTestcase
*/
public class Testa extends BaseTestcase {

    @Test
    public void testa_1(){
        System.out.println("testa-1执行");
    }

    @BeforeMethod
    public void beforeMethod(){
        System.out.println("beforemethod执行成功");
    }

    @AfterMethod
    public void afterMethod(){
        System.out.println("aftermethod执行成功");
    }

}

/**
*测试类Testa extends BaseTestcase
*/
public class Testb extends BaseTestcase {

    @Test
    public void testb_1(){
        System.out.println("testb_1执行了");
    }
}

/**
*testng.xml文件,配置运行设置
*/
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="111">
    <test name="test">
        <classes>
            <class name="com.test.finance.testcase.Testa"/>
            <class name="com.test.finance.testcase.Testb"/>
        </classes>
    </test>
</suite>

=====直接右键-运行testng.xml===

执行beforeSuite

  执行beforeclass

    beforemethod执行成功

      testa-1执行

    aftermethod执行成功


  执行afterclass

  执行beforeclass

    testb_1执行了

  执行afterclass

执行aftersuite

原文地址:https://www.cnblogs.com/jesse-zhao/p/14802039.html