TestNG(Testing Next Generation),是一个单元测试框架,它提供了一系列的丰富注解来帮助我们很方便的编写和管理被测项目的测试类和测试方法。
单元测试框架实现了通过代码编写自动化测试用例
依赖坐标:
maven仓库:mvnrepository.com
org.testng
testng
7.0.0
test
常见使用场景:
@BeforeSuit:整个自动化自测脚本初始化工作,做全局的初始化
@BeforeClass:某个测试模块的前置准备工作,如登录前的准备
当我们在测试的过程中,因为某些方面的原因,比如测试方法没有写完,或者有问题,我们暂时不希望它得到执行,我们就可以添加忽略标签来跳过此方法的运行。
@Test(enabled = false)
“超时”表示如果自动化测试花费的时间超过指定的毫秒数,那么TestNG将会中止它并将其标记为失败。这样在某些业务场景下,我们认为一个请求时间过长我们就可以直接宣判他因为超时而失败。
@Test(timeout=1000)
timeout属性的单位为毫秒。
@Test(priority = 1)
The scheduling priority. Lower priorities will be scheduled first.
step1: Edit configurations -->listeners–>use default reporters勾选上
step2: 选择testng.xml文件执行
step3: 代码的工程目录产生test-output目录,其中目录里面的index.html这支就是testng自带的报告
在TestNG中最常用的断言类是Assert,里面有很多的静态方法:
判断是否为True
Assert.assertTrue();
判断是否为false
Assert.assertFalse();
判断是否相等
Assert.assertEquals()
通过testng.xml文件可以更好的管理测试用例,并接入持续集成平台进行构建。
解释:
文档类型定义(Document Type Definition) 规定文档语法编辑规则
套件,根标签,通常由几个组成,name为必须属性
测试用例,name为必须属性;
用例中包含的类,子标签为
测试类,其中属性name为必须属性
TestNG可以通过两种方式向测试方法传递参数:
public class LoginTest(){
@Test
@Parameters(value = {"mobilephone","password"})
public void case01(String mobilephone, String password){
System.out.println("手机号码:"+mobilephone+",密码:"+password);
}
}
testng.xml只能传递简单的参数,如果是循环遍历的使用不同的参数则可以通过DataProvider(数据提供者)
数据驱动测试:将同类型数据通过统一化的形式管理起来(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文件中的数据,编写测试方法实现数据驱动测试。