【测试开发工程师】TestNG测试框架零基础入门(上)

哈喽大家好,我是小浪。那么今天是一期基于Java+TestNG测试框架的入门教学的博客,从只会手工测试提升到自动化测试,这将对你的测试技术提升是非常大的,有助于我们以后在找工作、面试的时候具备更大的竞争力~
在这里插入图片描述

一、什么是TestNG?

在学习之前,我们首先来了解一下什么是TestNG

TestNG是一个基于Java的测试框架,它是JUnit的替代品,可以更好地满足开发人员和测试人员的需求。TestNG的优势包括:

1.更好的注释:TestNG允许使用更多的注释来描述测试,这使得测试代码更加易读和易于维护.

2.更好的分组:TestNG允许将测试用例分组,这使得测试用例的管理更加容易.

3.更好的依赖性管理:TestNG允许测试用例之间建立依赖关系,这使得测试用例的执行更加灵活.

4.更好的参数化:TestNG允许在测试用例中使用参数,这使得测试用例的复用更加容易.

5.更好的报告:TestNG生成的测试报告更加详细和易读.

二、如何创建第一个TestNG用例?

OK,那了解了什么是TestNG之后,博主这里借助IDEA来演示打印第一个单元测试用例~

1、首先我们需要下载一个编译器IDEA(别告诉我你连IDEA都没有下载~),新建一个Maven项目
在这里插入图片描述

2、找到pow.xml文件,将以下配置文件的代码复制进去,等待IDEA加载~

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>MavenTest</artifactId>
  <version>1.0-SNAPSHOT</version>

  <dependencies>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.10</version>
    </dependency>
  </dependencies>
</project>

3、建好了项目之后,我们需要去下载一个插件Create TestNG XML,File->settings-Plugins搜插件的名字~
在这里插入图片描述
4、java文件下面新建一个类Test1,鼠标选中类名,按alt+enter选择Create Test.
在这里插入图片描述

5、选择TestNG,然后取一个类名,这里我就取得Test1,之后大家可以在test目录下面看到我们刚才取的类名,注意类名必须以大写的Test结尾~

6、写上第一个测试用例的代码,这里我就直接打印了,大家可以自行选择喜欢的内容进行输出~

    @Test
    public void Test(){
    
    
        System.out.println("这是一个TestNG测试框架case");
    }

运行结果:我们可以看到运行成功了!!
在这里插入图片描述

三、TestNG的常用注解

1、@BeforeClass:在调用当前类的第一个测试方法之前运行,在当前类中仅运行一次

@BeforeClass
public void BeforeClass(){
    
    
    System.out.println("在调用当前类的第一个测试方法之前运行,在当前类中仅运行一次");
}

在这里插入图片描述

2、@AfterClass:在调用当前类的第一个测试方法之后运行,在当前类中仅运行一次

@AfterClass
public void AfterClass(){
    
    
    System.out.println("在调用当前类的第一个测试方法之后运行,在当前类中仅运行一次");
}

在这里插入图片描述

3、@BeforeTest:注释的方法将在属于test标签内的所有类的所有测试方法运行之前运行,一个test标签内可能有多个class(类),在当前test标签内仅运行一次~

    @BeforeTest
    public void BeforeTest(){
    
    
        System.out.println("这是BeforeTest的用例case");
    }

4、@AfterTest:注释的方法将在属于test标签内的所有类的所有测试方法运行之后运行,一个test标签内可能有多个class(类),在当前test标签内仅运行一次~

    @AfterTest
    public void AfterTest(){
    
    
        System.out.println("这是AfterTest的用例case");
    }

运行结果:(注意比较优先级)

在这里插入图片描述

5、@BeforeSuite:在该套件的所有测试运行之前运行,仅运行一次

    @BeforeSuite
    public void BeforeSuite(){
    
    
        System.out.println("这是@BeforeSuite的用例case");
    }

6、@AfterSuite:在该套件的所有测试运行之后运行,仅运行一次

    @AfterSuite
    public void AfterSuite(){
    
    
        System.out.println("这是@AfterSuite的用例case");
    }

在这里插入图片描述

7、@BeforeMethod:注释方法将在当前类中的每个测试方法之前运行

    @BeforeMethod
    public void BeforeMethod(){
    
    
        System.out.println("这是@BeforeMethod的用例case");
    }

8、@AfterMethod:注释方法将在当前类中的每个测试方法之后运行

    @AfterMethod
    public void AfterMethod(){
    
    
        System.out.println("这是@AfterMethod的用例case");
    }

9、@BeforeGroups:配置方法将在组列表运行之前运行。 此方法保证在调用属于这些组中的任何第一个测试方法之前运行

10、@AfterGroups:此配置方法将在组列表运行之后运行。该方法保证在调用属于这些组的任何最后一个测试方法之后运行

    @Test(groups = "groups1")
    public void Test1(){
    
    
        System.out.println("这是groups1的用例Test1");
    }

    @Test(groups = "groups1")
    public void Test11(){
    
    
        System.out.println("这是groups1的用例Test11");
    }

    @Test(groups = "groups2")
    public void Test2(){
    
    
        System.out.println("这是groups2的用例Test2");
    }

    @Test(groups = "groups2")
    public void Test22(){
    
    
        System.out.println("这是groups2的用例Test22");
    }

    //只对group1有效,即Test1和Test11
    @BeforeGroups(groups="group1")
    public void BeforeGroups(){
    
    
        System.out.println("这是@BeforeGroups的用例case");
    }

    //只对group2有效,即Test2和Test22
    @AfterGroups(groups="group2")
    public void AfterGroups(){
    
    
        System.out.println("这是@AfterGroups的用例case");
    }

运行结果:

在这里插入图片描述

由此可以得出TestNG运行时,执行顺序:@BeforeSuite->@BeforeTest->@BeforeClass->@BeforeGroups.

11、@Parameters:描述如何将参数传递给@Test方法

12、@DataProvider:标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称

四、以XML的方式运行TestNG

那么TestNG支持xml的格式运行,那么如何操作呢?

1、首先我们先来认识一些xml中的标识符以及它们的含义:

<suite> 套件,根标签,通常由几个<test组成>
属性
  name 套件的名称,必须属性;
  verbose 运行的级别或详细程度;
  parallel 是否运行多线程来运行这个套件;
  thread-count 如果启用多线程,用于指定开户的线程数;
  annotations 在测试中使用的注释类型;
  time-out 在本测试中的所有测试方法上使用的默认超时时间;
<test>    测试用例,name为必须属性;
<classes> 用例中包含的类,子标签为<class name="className">;
<class> 测试类,其中属性name为必须属性;;
packages> 用例中包含的包,包中所有的方法都会执行,子标签为<package name="packageName">;
package> 测试包,name为必须属性;
<methods> 指定测试类中包含或排除的方法,子类为<include>,<exclude>; <include> 指定需要测试的方法,name为必须属性;
<exclude> 指定类中不需要测试的方法,name为必须属性;
<groups> 指定测试用例中要运行或排除运行的分组,子标签为<run>,<run>下包含<include>,<exclude>标签,<include>,<exclude>的name指定运行、不运行的分组;

2、在项目下新建一个testng.xml文件:

在这里插入图片描述

代码模板如下:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >

<suite name="Suite1" verbose="1" >
    <test name="Nopackage" >
        <classes>
            <class name="NoPackageTest" />
        </classes>
    </test>

    <test name="Regression1">
        <classes>
            <class name="test.sample.ParameterSample"/>
            <class name="test.sample.ParameterTest"/>
        </classes>
    </test>
</suite>

3、在test目录下面新建一个类Test3Test

import org.testng.Assert;
import org.testng.annotations.Test;
import org.testng.annotations.*;


public class Test3Test {
    
    

    @Test(groups = "group1")
    public void testC03() {
    
    
        System.out.println("testC03");
        Assert.assertTrue(true);
    }

    @Test(groups = "group1")
    public void testC04() {
    
    
        System.out.println("testC04");
        Assert.assertTrue(true);
    }

    @Test(groups = "group2")
    public void testC05() {
    
    
        System.out.println("testC05");
        Assert.assertTrue(true);
    }

    @BeforeTest
    public void beforeTest() {
    
    
        System.out.println("beforeTest");
    }

    @AfterTest
    public void afterTest() {
    
    
        System.out.println("afterTest");
    }

    @BeforeClass
    public void beforeClass() {
    
    
        System.out.println("beforeClass");
    }

    @AfterClass
    public void afterClass() {
    
    
        System.out.println("afterClass");
    }

    @BeforeSuite
    public void beforeSuite() {
    
    
        System.out.println("beforeSuite");
    }

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

    @BeforeGroups(groups = {
    
    "group1", "group2"})
    public void beforeGroups() {
    
    
        System.out.println("beforeGroups");
    }

    @AfterGroups(groups = {
    
    "group1", "group2"})
    public void afterGroups() {
    
    
        System.out.println("afterGroups");
    }


    @BeforeMethod
    public void beforeMethod() {
    
    
        System.out.println("beforeMethod");
    }

    @AfterMethod
    public void afterMethod() {
    
    
        System.out.println("afterMethod");
    }
}

4、修改testng.xml文件中的代码,右键运行testng.xml文件:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite" parallel="none">
    <test name="Test">
        <classes>
            <class name="Test3Test"/>
        </classes>
    </test>
</suite>

运行结果:

在这里插入图片描述

五、以Maven的方式运行TestNG

1、首先我们需要下载一个插件Maven Helper:
在这里插入图片描述

2、其次需要在pow.xml中配置以下依赖,代码粘贴后,需要点击IDEA右上角的Maven刷新按钮,这样代码就不会出现爆红了~

<dependencies>//注意这个依赖放在这个<dependencies>标签里面
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.8</version>
        </dependency>
    </dependencies>

    <build>//<build>标签单独开一行
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>testng.xml</suiteXmlFile>//该文件位于工程根目录时,直接填写名字,其它位置要加上路径。
                    </suiteXmlFiles>
                </configuration>
            </plugin>
        </plugins>
    </build>

代码不爆红就说明没有问题~

在这里插入图片描述

3、右键Maven,点击test即可运行Maven:
在这里插入图片描述

4、运行结果:

在这里插入图片描述

注意事项:Maven Helper这个插件的语法为 :<suiteXmlFile>src/test/resources/testNGFilesFolder/${testNgFileName}.xml</suiteXmlFile> 标签里是测试代码的路径~

OK,那么以上就是本篇博客的所有内容了,下篇博客我们继续更新TestNG的其他知识点,感兴趣的小伙伴可以点个star支持一下;关于秋招,实习可添加下方v咨询欧~

猜你喜欢

转载自blog.csdn.net/m0_62426532/article/details/134621508