TestNG接口自动化入门基础篇

TestNG基础

简介

什么是TestNG?

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

特点

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

TestNG和JUnit的区别
下面我来整理一下自己在使用TestNG和JUnit之后,最直观的区别有哪些
在这里插入图片描述

安装

1.创建maven项目,
在这里插入图片描述
2.填写好项目名,项目路径,项目组织,项目ID,如图所示
3.点击finish完成创建,在pom.xml下配置testng依赖

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

4.下载依赖(pom文件重新加载项目)
在这里插入图片描述
5.依赖包下载成功,运行输出BUILD SUCCESS
在这里插入图片描述

快速入门

创建Demo测试类

我们在test/java目录下创建一个package名test,再在包名下创建一个测试类DemoTest
在这里插入图片描述

基础注解使用

public class DemoTest {
    //测试套件前运行,一个测试套件中可以包含多个测试类,仅运行一次。
    @BeforeSuite
    public void beforeSuite(){
        System.out.println("BeforeSuite");
    }
    //注释的方法将在属于<test>标签内的类的所有测试方法运行之前运行。
    @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);
    }

    //注释的方法将在属于<test>标签内的类的所有测试方法运行之后运行。
    @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");
    }
}

我们看下控制台输出效果,各个注解的执行顺序
在这里插入图片描述

参数化测试

@Parameters 使用textng.xml传送参数

有的方法需要传参,好比登录成功时我们需要用户的姓名和ID号
参数的传递直接写在代码中不利于维护更改,也不方便不懂代码的测试人员进行参数修改,这个时候就需要参数化测试
首先我们再创建个DemoTest2类,编写一个login() 方法,需要在方法上加上注解@Parameters,在这里插入图片描述
并在xml配置文件中利用<parameter name = "xxx" value = "xxx"/>的方式传参

<?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();
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值