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对象,调用时也会很方便。

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

EOF

本文作者:久曲建的测试窝 本文链接:https://www.cnblogs.com/longronglang/p/9992304.html 关于博主:评论和私信会在第一时间回复。或者直接私信我。 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处! 声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力! 优秀不够,你是否无可替代

软件测试交流QQ群:721256703,期待你的加入!!

欢迎关注我的微信公众号:软件测试君