TestNG最常用的注解

TestNG使用它最常用的注解

1. 注解:@Test:标识方法是一个基于TestNG的测试用例

常用属性:

enabled = false 标识它不是一个测试用例

priority = -1 默认的测试用例的执行顺序是基于方法名的ASCII码,priority可以改变用例的执行顺序,值越小优先级越高。

invocationCount = 2 控制测试用例的执行次数

dependsOnMethods={"方法名"} 解决测试用例之间的依赖关系

2. 前后置注解

例如:连接数据库、打开浏览器

Before 注解

  • @BeforeSuite
  • @BeforeTest
  • @BeforeClass
  • @BeforeMethod

After 注解

  • @AfterSuite
  • @AfterTest
  • @AfterClass
  • @AfterMethod

3. TestNG 的断言

Assert.assertEquals("登陆成功", "登陆成功");

Assert.assertTrue(true);

常用断言说明

assertEquals

用于校验实际结果与预期结果是否一致。

Assert.assertEquals(actual, expected);

示例:

Assert.assertEquals("登陆成功", "登陆成功");

assertTrue

用于校验条件是否为 true

Assert.assertTrue(condition);

示例:

Assert.assertTrue(true);

4. 批量执行所有的测试用例:TestNG 配置文件 testng.xml

示例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="码尚商城">

    <test name="注册模块">
        <classes>
            <class name="com.api.register.TestRegister" />
        </classes>
    </test>

    <test name="登陆模块">
        <classes>
            <class name="com.api.login.TestLogin2" />
            <class name="com.api.login.TestLogin" />
        </classes>
    </test>

</suite>

说明

  • <suite>:测试套件,可以包含多个测试模块。
  • <test>:测试模块,用于组织一组测试类。
  • <classes>:定义当前模块下需要执行的测试类。
  • <class>:指定具体执行的 TestNG 测试类。
  • 运行 testng.xml 后,TestNG 会按照配置批量执行所有测试用例。
    在这里插入图片描述

5. TestNG 实现数据驱动(正例和反例)

1. 第一种方式

第一步:在 testng.xml 中定义参数的值

<test name="登陆模块">

    <classes>
        <class name="com.api.login.TestLogin2" />

        <parameter name="username" value="admin"/>
        <parameter name="password" value="123"/>
    </classes>

</test>

第二步:在测试用例上面通过以下注解来引入参数

@Parameters(value={"username","password"})

2. 第二种方式

package com.api.login;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class TestLogin2 {

    // 测试登录的用例
    @Test(dataProvider = "getData")
    public void testLogin2(String username, String password) {
        System.out.println("用户名:" + username + ",密码:" + password);
    }

    // 获取数据方法
    @DataProvider
    public Object[][] getData() {

        Object[][] data = {
            {"admin", "123"},
            {"李四", "123"},
            {"王五", "123"}
        };

        return data;
    }
}

说明

@DataProvider

TestNG 提供的数据驱动注解,用于为测试方法提供测试数据。

@Test(dataProvider = "getData")

指定当前测试方法使用 getData() 方法返回的数据进行参数化执行。

@Test(dataProvider = "getData")
数据格式

@DataProvider 返回值必须是二维数组:

Object[][] data = {
    {"admin", "123"},
    {"李四", "123"},
    {"王五", "123"}
};

每一行代表一组测试数据:

usernamepassword
admin123
李四123
王五123
执行结果

测试方法会执行 3 次:

用户名:admin,密码:123
用户名:李四,密码:123
用户名:王五,密码:123

数据驱动测试优点

  • 测试逻辑与测试数据分离
  • 减少重复代码
  • 提高测试用例复用性
  • 方便扩展大量测试数据
  • 常用于登录、注册、查询等场景

6. TestNG + Allure 生成精美的测试报告

第一步:在 pom.xml 里面增加 Allure 的依赖(第三方库)

<!-- allure -->

<!-- aspectjweaver maven 坐标 -->

<!-- 构建 allure 的插件,AOP 拦截测试结果 -->

第二步:生成临时 JSON 报告

直接运行 testng.xml 即可。

注意:这里有一个问题,每次执行时不会自动清空原来的 JSON 报告,因此可能会导致历史数据被累计到新报告中。


第三步:生成临时 JSON 报告以及 HTML 格式的 Allure 报告(并自动清理旧数据)

通过 Maven 命令运行:

1. 清理并执行测试

mvn clean test

说明:

  • 先清空旧的测试结果数据
  • 再执行测试用例
  • 生成最新的 Allure JSON 数据

2. 生成 Allure 报告

mvn io.qameta.allure:allure-maven:serve

说明:

  • 根据测试结果生成 Allure HTML 报告
  • 自动启动本地 Web 服务
  • 在浏览器中打开测试报告

执行流程

执行测试
    ↓
生成 allure-results(JSON 数据)
    ↓
mvn io.qameta.allure:allure-maven:serve
    ↓
生成 HTML 报告
    ↓
浏览器展示测试结果

Allure 优势

  • 界面美观
  • 支持测试步骤展示
  • 支持失败截图
  • 支持附件上传
  • 支持趋势分析
  • 支持 TestNG/JUnit/Pytest 等主流测试框架
  • 支持 CI/CD 集成(Jenkins、GitLab CI 等)

【参考】https://www.bilibili.com/video/BV1G38iz2ErT
【参考】https://www.cnblogs.com/df888/p/15803356.html
【参考】https://testng.org/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值