13. 【Java基础】TestNG单元测试框架

简介

TestNG(Testing Next Generation),是一个单元测试框架,它提供了一系列的丰富注解来帮助我们很方便的编写和管理被测项目的测试类和测试方法。

单元测试框架实现了通过代码编写自动化测试用例

  1. 提供用例组织与执行
  2. 提供丰富的断言方法
  3. 提供丰富的日志和报告信息

依赖坐标:
maven仓库:mvnrepository.com

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.0.0</version>
    <scope>test</scope>
</dependency>

TestNG常用注解

常见使用场景:
@BeforeSuit:整个自动化自测脚本初始化工作,做全局的初始化
@BeforeClass:某个测试模块的前置准备工作,如登录前的准备
在这里插入图片描述

Test注解常用属性

忽略测试:

当我们在测试的过程中,因为某些方面的原因,比如测试方法没有写完,或者有问题,我们暂时不希望它得到执行,我们就可以添加忽略标签来跳过此方法的运行。

@Test(enabled = false)

超时测试:

“超时”表示如果自动化测试花费的时间超过指定的毫秒数,那么TestNG将会中止它并将其标记为失败。这样在某些业务场景下,我们认为一个请求时间过长我们就可以直接宣判他因为超时而失败。

@Test(timeout=1000)

timeout属性的单位为毫秒。

测试方法优先级:

@Test(priority = 1)

The scheduling priority. Lower priorities will be scheduled first.

TestNG如何查看内置报告

step1: Edit configurations -->listeners–>use default reporters勾选上

step2: 选择testng.xml文件执行

step3: 代码的工程目录产生test-output目录,其中目录里面的index.html这支就是testng自带的报告

TestNG常用断言

在TestNG中最常用的断言类是Assert,里面有很多的静态方法:

判断是否为True

Assert.assertTrue();

判断是否为false

Assert.assertFalse();

判断是否相等

Assert.assertEquals()

testng.xml配置文件

通过testng.xml文件可以更好的管理测试用例,并接入持续集成平台进行构建。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite" >
    <test name="Test">
        <classes>
            <class name="com.test.day09.TestngTest01" />
            <class name="com.test.day09.TestngTest02" />
            <class name="com.test.day09.TestngTest03" />
        </classes>
    </test>
</suite>

解释:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
    文档类型定义(Document Type Definition) 规定文档语法编辑规则
<suite>     套件,根标签,通常由几个<test>组成,name为必须属性
<test>      测试用例,name为必须属性;
<classes>   用例中包含的类,子标签为<class>
<class>     测试类,其中属性name为必须属性

TestNG参数化

TestNG可以通过两种方式向测试方法传递参数:

  • 通过testng.xml(用的很少,了解下):使用parameter属性,值为一个参数数组,参数名与testng.xml中的保持一致
<suite name="Suite" parallel="false">
    <test name="登录">
        <classes>
            <class name="com.lemon.phoenix.LoginTest"/>
        </classes>
    </test>
    <parameter name="mobilephone" value="18588220000"/>
    <parameter name="password" value="123456"/>
</suite>
public class LoginTest(){
    @Test
    @Parameters(value = {"mobilephone","password"})
    public void case01(String mobilephone, String password){
        System.out.println("手机号码:"+mobilephone+",密码:"+password);
    }
}

testng.xml只能传递简单的参数,如果是循环遍历的使用不同的参数则可以通过DataProvider(数据提供者)

  • 通过DataProvider(数据驱动测试):利用此注解标注一个方法返回参数,返回值为一个Object类型的二维数组,若没有声明则为方法名。在测试方法上引用此dataprovider时需要指向对应的name值

数据驱动测试:将同类型数据通过统一化的形式管理起来(Excel、csv),再通过对应技术手段将其读取出来驱动测试用例的执行

//针对同一个功能点进行测试时,指定数据提供者,注入测试数据到方法中
@Test(dataProvider="getDatas")
public void test(String name,String phone,String pwd) {
    //TODO
}
​
//使用DataProvider注解
@DataProvider
public Object [][] getDatas(){
    Object [][] datas = {{"","",""},{"aa","",""},{"aa","123456",""}};
    return datas;
}

作业

1、请实现以下功能测试代码:

(1)有LoginTest与RegisterTest两个测试类

(2)在所有测试类运行之前打印输出:全局初始化操作

(3)在测试类LoginTest运行之前打印输出:登录测试类执行开始

(4)在测试方法loginSuccess()运行之前打印输出:登录测试方法执行开始

(5)在测试方法loginSuccess()运行之后打印输出:登录测试方法执行结束

(6)在测试类LoginTest运行之后打印输出:登录测试类执行结束

2、基于上一题,请在RegisterTest测试类中实现读取以下Excel文件中的数据,编写测试方法实现数据驱动测试。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值