TestNG接口自动化入门基础篇

TestNG基础

文章目录

    • 简介
      • 什么是TestNG?
      • 特点
    • 安装
    • 快速入门
      • 创建Demo测试类
      • 基础注解使用
    • 参数化测试
      • @Parameters 使用textng.xml传送参数
      • @DataProvider传递参数

简介

什么是TestNG?

是一款设计测试用例执行流程的测试框架。是java中的一个开源『自动化测试框架』。
TestNG还涵盖了整个核心的JUnit4功能,但引入了一些新的功能。它目前是很流行的单元测试框架,有完善的用例管理模块,配合Maven能够很方便管理依赖,插件

特点

  • 注解
  • TestNG使用Java和面向对象的功能
  • 支持综合类测试(例如,默认情况下,没有必要创建一个新的测试每个测试方法的类的实例)
  • 独立的编译时间测试代码运行时配置/数据信息
  • 灵活的运行时配置
  • 主要介绍“测试组”。当编译测试,只要问TestNG运行所有的“前端”的测试,或“快”,“慢”,“数据库”等
  • 支持依赖测试方法,并行测试,负载测试,局部故障
  • 灵活的插件API

TestNG和JUnit的区别
下面我来整理一下自己在使用TestNG和JUnit之后,最直观的区别有哪些
TestNG接口自动化入门基础篇_第1张图片

安装

1.创建maven项目,
TestNG接口自动化入门基础篇_第2张图片
2.填写好项目名,项目路径,项目组织,项目ID,如图所示TestNG接口自动化入门基础篇_第3张图片
3.点击finish完成创建,在pom.xml下配置testng依赖

    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>${testng.version}</version>
        </dependency>
    </dependencies>

4.下载依赖(pom文件重新加载项目)
TestNG接口自动化入门基础篇_第4张图片
5.依赖包下载成功,运行输出BUILD SUCCESS
TestNG接口自动化入门基础篇_第5张图片

快速入门

创建Demo测试类

我们在test/java目录下创建一个package名test,再在包名下创建一个测试类DemoTest
TestNG接口自动化入门基础篇_第6张图片

基础注解使用

public class DemoTest {
    //测试套件前运行,一个测试套件中可以包含多个测试类,仅运行一次。
    @BeforeSuite
    public void beforeSuite(){
        System.out.println("BeforeSuite");
    }
    //注释的方法将在属于标签内的类的所有测试方法运行之前运行。
    @BeforeTest
    public void beforeTest(){
        System.out.println("BeforeTest");
    }
    //在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。
    @BeforeClass
    public void beforeClass(){
        System.out.println("BeforeClass");
    }
    //如果这个注解没有定义是哪个group就不执行,定义哪个group就会在哪个组执前的method前执行
    @BeforeGroups("group1")
    public void beforeGroups(){
        System.out.println("BeforeGroups");
    }
    //将类或方法标记为测试的一部分。
    @Test(groups = "group2")
    public void test2(){
        System.out.println("test from group2");
    }
    //在某个group内,每执行一个test的group方法,就会被调用一次,
    @BeforeMethod
    public void beforeMethod(){
        System.out.println("beforeMethod");
    }
    @Test(groups = "group1")
    public void test1(){
        System.out.println("test from group1");
        Assert.assertTrue(true);
    }
    @Test(groups = "group1")
    public void test11(){
        System.out.println("test11 from group1");
        Assert.assertTrue(true);
    }

    //注释的方法将在属于标签内的类的所有测试方法运行之后运行。
    @AfterTest
    public void afterTest(){
        System.out.println("afterTest");
    }
    @AfterTest
    public void afterClass(){
        System.out.println("afterClass");
    }
    //测试套件后运行,一个测试套件中可以包含多个测试类,仅运行一次。
    @AfterSuite
    public void afterSuite(){
        System.out.println("afterSuite");
    }
    //此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行。
    @AfterGroups("group1")
    public void afterGroup(){
        System.out.println("afterGroups");
    }
    //注释方法将在每个测试方法之后运行。
    @AfterMethod
    public void afterMethod(){
        System.out.println("afterMethod");
    }
}

我们看下控制台输出效果,各个注解的执行顺序
TestNG接口自动化入门基础篇_第7张图片

参数化测试

@Parameters 使用textng.xml传送参数

有的方法需要传参,好比登录成功时我们需要用户的姓名和ID号
参数的传递直接写在代码中不利于维护更改,也不方便不懂代码的测试人员进行参数修改,这个时候就需要参数化测试
首先我们再创建个DemoTest2类,编写一个login() 方法,需要在方法上加上注解@Parameters,TestNG接口自动化入门基础篇_第8张图片
并在xml配置文件中利用的方式传参

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="testNG Demo">
    <test verbose="2" preserve-order="true" name="/Users/kobe/workspace/mavenProject/testngProject">
        <classes>
            <class name="org.cycx.test.DemoTest2">
                <parameter name="name" value="Allen_Qin"></parameter>
                <parameter name="id" value="001"></parameter>
            </class>
         </classes>
    </test>
</suite>

测试结果:

在这里插入图片描述

@DataProvider传递参数

public class Test01 {

    @Test(dataProvider = "readCases")
    public void test01(CaseInfo caseInfo){
        System.out.println(caseInfo);
    }

    @DataProvider
    public Object[] readCases(){
        List<CaseInfo> listDatas = EasyPoiExcelUtil.readExcel(0);
        return listDatas.toArray();
    }
}

你可能感兴趣的:(Java接口自动化,自动化,junit,java)