JAVA利用enum结合testng做数据驱动示例

数据驱动是做自动化测试中很重要的一部分,数据源的方案也是百花八门了,比如利用外部文件,直接在@DataProvider中写死等等,我们今天介绍一下利用enum来做数据源,先来看一下enum的写法:

复制代码
public enum EnumData {

    PAY_RESERVE(1, "支付预约"),
    DIRECT_RESERVE(2, "直接预约"),
    BILL(3, "开单");

    EnumData(int resultCode, String resultMsg) {
        this.resultCode = resultCode;
        this.resultMsg = resultMsg;
    }

    private int resultCode;
    private String resultMsg;

    public int getResultCode() {
        return resultCode;
    }

    public String getResultMsg() {
        return resultMsg;
    }


}
复制代码

上述代码可理解为有两组数据,每一组里面有两个数据,一个是retCode,一个是msg。现在把enum给加载到@DataProvider中去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
 
public class TestEnumData {
 
 
    @DataProvider
    public Object[][] enumDataMethod() {
        EnumData[] vs = EnumData.values();
        Object[][] obj = new Object[vs.length][];
        for (int i = 0; i < vs.length; i++) {
            obj[i] = new Object[]{vs[i]};
        }
        return obj;
    }
 
    @Test(dataProvider = "enumDataMethod")
    public void test(EnumData en) {
        System.out.println(en.getResultCode() + "\t" + en.getResultMsg());
    }
 
}

利用上述方式最大的好处是把数据本身与持久化的对象放在一个地方了,且调用时,也很方便。

其实,利用外部文件的话,也可以数据对象持久化,只是原来的示例中我放在了一个Map中,同样可以把Map改为一个pojo对象,调用时也会很方便。

至于哪种方式好,大家自行的去体验,自行的去实现吧!

posted @   久曲健  阅读(404)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示