数据驱动是做自动化测试中很重要的一部分,数据源的方案也是百花八门了,比如利用外部文件,直接在@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中去:
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() + " " + en.getResultMsg());
}
}
利用上述方式最大的好处是把数据本身与持久化的对象放在一个地方了,且调用时,也很方便。
其实,利用外部文件的话,也可以数据对象持久化,只是原来的示例中我放在了一个Map中,同样可以把Map改为一个pojo对象,调用时也会很方便。
至于哪种方式好,大家自行的去体验,自行的去实现吧!