在我们增加测试用例时,通常希望测试数据和测试框架,以及页面元素分开。这样方便维护。
在testng中提供的DataProvider注解,很方便我们集中管理测试数据:
public class SearchData {
@DataProvider(name = "searchKey1")
public static Object[][] searchKeys() {
return new Object[][]{
{"apple"},
{"苹果"}
};
}
@DataProvider(name = "searchKey2")
public Object[][] providerMethod(Method method){
Object[][] result = null;
if(method.getName().equals("testSearch1")){
result = new Object[][]{new Object[]{"apple"}};
}else if(method.getName().equals("testSearch2")){
result = new Object[][]{new Object[]{"苹果"}};
}
return result;
}
}
@Test(dataProvider = "searchKey1", dataProviderClass = SearchData.class)
public void testSearch(String text){
page.SearchText(text);
sleep(1);
System.out.println(driver.getTitle());
Assert.assertTrue(driver.getTitle().contains(text));
System.out.println(page.getCurrentUrl());
}
1,尽量将测试数据在单独的文件中进行管理,这样当测试页面发生变化时能统一处理。 2,为了防止页面发生变化,尽量在传递测试数据时,以类的形式传递,而不是字段传递。
假如,我们的DemandClass发生了变化,那么在修改测试用例时,是不是比直接罗列字段要更好定位修改位置?
不知道这样做对不对,好不好,需要大家去探索了。。。。 如果有更好的管理方式,请大家分享。。。
public class DemandData {
public String title;
public int[] resType;
public String bizType;
public int demandType;
public String feedbackDate;
public String vender;
public final String contract="181315IDC0016";
//--机房信息
// 机房名称
public String mserversName;
// 区域要求
public String areaDemand ;
// 预计服务器数量
public String serversNum;
// 电力稳定性
public String stability;
// 使用时间
public String museTimeDesc;
// 其它说明
public String mothers;
//--网络信息
// 外网总带宽
public String netbandWidth;
// 带宽说明
public String bandWidthDesc;
// 网络稳定性
public String netWorkStability;
// 网络接口
public String netWorkInterface;
// 模块类型
public String moduleType;
//其它说明
public String nothers;
// 使用时间
public String nuseTimeDesc;
//--传输信息
//传输类型
public String transmissionType;
//需求数量
public String demandNum;
//需求数量单位
public String circuitryUnit;
//A端地址
public String a_ip_address;
//B端地址
public String b_ip_address;
//必要条件
public String necessaryCondition;
//非必要条件
public String notNecessaryCondition;
//使用时间
public String tuseTimeDesc;
//其它说明
public String tothers;
public String dataInfo;
@DataProvider(name = "machine")
public static Object[][] machine() {
DemandData demand = new DemandData();
demand.dataInfo="机房-最少信息";
demand.title = "机房-最少信息";
demand.resType = new int[1];
demand.resType[0]=0;
demand.bizType= "IDC";
demand.demandType = 0;
demand.feedbackDate = "2013-07-01";
demand.vender="自动化 供应商";
demand.mserversName = "自动化 机房名称";
demand.areaDemand ="自动化 区域";
demand.serversNum = "100";
demand.museTimeDesc ="反馈时间";
DemandData demand1 = new DemandData();
demand1.dataInfo="机房-扩容";
demand1.title = "机房-扩容";
demand1.resType = new int[1];
demand1.resType[0]=0;
demand1.bizType= "CDN";
demand1.demandType = 1;
demand1.feedbackDate = "2013-07-01";
demand1.vender="自动化 供应商";
demand1.mserversName = "自动化 机房名称";
demand1.areaDemand ="自动化 区域";
demand1.serversNum = "100";
demand1.stability = "99.99";
demand1.museTimeDesc ="反馈时间";
demand1.mothers="自动化 机房 其他说明";
DemandData demand2 = new DemandData();
demand2.dataInfo="机房-续签";
demand2.title = "机房-续签";
demand2.resType = new int[1];
demand2.resType[0]=0;
demand2.bizType= "P2SP";
demand2.demandType = 2;
demand2.feedbackDate = "2013-07-01";
demand2.vender="自动化 供应商";
demand2.mserversName = "自动化 机房名称";
demand2.areaDemand ="自动化 区域";
demand2.serversNum = "100";
demand2.stability = "99.99";
demand2.museTimeDesc ="反馈时间";
demand2.mothers="自动化 机房 其他说明";
return new Object[][]{
{demand},
{demand1},
{demand2},
};
}
@DataProvider(name = "network")
public static Object[][] network() {
DemandData demand = new DemandData();
demand.dataInfo="network-必填项";
demand.title = "network-必填项";
demand.resType = new int[1];
demand.resType[0]=1;
demand.bizType= "IDC";
demand.demandType = 0;
demand.feedbackDate = "2013-07-01";
demand.vender="自动化 供应商";
demand.netbandWidth ="1234";
demand.nuseTimeDesc="自动化 带宽 使用时间";
DemandData demand1 = new DemandData();
demand1.dataInfo="network-所有信息";
demand1.title = "network-所有信息";
demand1.resType = new int[1];
demand1.resType[0]=1;
demand1.bizType= "IDC";
demand1.demandType = 1;
demand1.feedbackDate = "2013-07-01";
demand1.vender="自动化 供应商";
demand1.netbandWidth ="1234";
demand1.bandWidthDesc="自动化 带宽说明";
demand1.netWorkStability="99.99";
demand1.netWorkInterface="自动化 网络接口";
demand1.moduleType="自动化 模块类型";
demand1.nothers="自动化 带宽 其他";
demand1.nuseTimeDesc="自动化 带宽 使用时间";
return new Object[][]{
{demand},
{demand1},
};
}
@DataProvider(name = "transInfo")
public static Object[][] transInfo() {
DemandData demand = new DemandData();
demand.dataInfo="transInfo-最少信息";
demand.title = "自动化 标题";
demand.resType = new int[1];
demand.resType[0]=2;
demand.bizType= "IDC";
demand.demandType = 0;
demand.feedbackDate = "2013-07-01";
demand.vender="自动化 供应商";
demand.transmissionType = "光纤";
demand.demandNum="1234";
//demand.circuitryUnit;
demand.a_ip_address="自动化 A端地址";
demand.b_ip_address="自动化 B端地址";
demand.necessaryCondition="自动化 必要条件";
demand.tuseTimeDesc="自动化 传输 使用时间";
DemandData demand1 = new DemandData();
demand1.dataInfo="transInfo-最少信息";
demand1.title = "自动化 标题";
demand1.resType = new int[1];
demand1.resType[0]=2;
demand1.bizType= "CDN";
demand1.demandType = 1;
demand1.feedbackDate = "2013-07-01";
demand1.vender="自动化 供应商";
demand1.transmissionType = "电路";
demand1.demandNum="1234";
demand1.circuitryUnit="G";
demand1.a_ip_address="自动化 A端地址";
demand1.b_ip_address="自动化 B端地址";
demand1.necessaryCondition="自动化 必要条件";
demand1.notNecessaryCondition="自动化 非必要条件";
demand1.tuseTimeDesc="自动化 传输 使用时间";
demand1.tothers="自动化 传输 其他";
return new Object[][]{
{demand},
{demand1},
};
}
@DataProvider(name = "demand")
public static Object[][] demand() {
DemandData demand = new DemandData();
demand.dataInfo="需求的所有信息";
demand.title = "自动化 标题";
demand.resType = new int[3];
demand.resType[0]=0;
demand.resType[1]=1;
demand.resType[2]=2;
demand.bizType= "P2SP";
demand.demandType = 2;
demand.feedbackDate = "2013-07-01";
demand.vender="自动化 供应商";
demand.mserversName = "自动化 机房名称";
demand.areaDemand ="自动化 区域";
demand.serversNum = "100";
demand.stability = "99.99";
demand.museTimeDesc ="反馈时间";
demand.mothers="自动化 机房 其他说明";
demand.netbandWidth ="1234";
demand.bandWidthDesc="自动化 带宽说明";
demand.netWorkStability="99.99";
demand.netWorkInterface="自动化 网络接口";
demand.moduleType="自动化 模块类型";
demand.nothers="自动化 带宽 其他";
demand.nuseTimeDesc="自动化 带宽 使用时间";
demand.transmissionType = "电路";
demand.demandNum="1234";
demand.circuitryUnit="G";
demand.a_ip_address="自动化 A端地址";
demand.b_ip_address="自动化 B端地址";
demand.necessaryCondition="自动化 必要条件";
demand.notNecessaryCondition="自动化 非必要条件";
demand.tuseTimeDesc="自动化 传输 使用时间";
demand.tothers="自动化 传输 其他";
return new Object[][]{
{demand},
};
}
}