终于到了该准备数据的时候啦.脚本和case写的再好,没有数据也是白搭.RFT和
QTP都差不多,都有自己的存放数据的地方,datapool--我们不得不面对的现实,呵呵.至于
测试数据该怎么设计,这事我可解决不了,但是如果你只是想了解下,该怎么操作datapool,这事我能帮你.在这篇
文章中我会提供给大家一个写好的操作方法,去专门操作datapool,声明啊这些方法有的也是抄的.嘿嘿.
1.得到了datapool的handle.
public static IDatapool open_DP_File(String filename) {
java.io.File dpFile = new java.io.File((String)getOption(IOptionName.DATASTORE),filename + ".rftdp");
return Datapool.load(dpFile);
}
2.创建个DatapoolEquivalenceClass,简单的说,你仅仅是创建了个datapool是没用的.你必须要有DatapoolEquivalenceClass才能对里面的record进行操作,什么搜索啊,查值啊之类的.当然如果你是手动创建的datapool,并且已经在里面定义了一些变量什么的,你就不需要进行下面的方法啦.
protected static DatapoolEquivalenceClass create_EC(Datapool dp) {
DatapoolEquivalenceClass ec;
ec = (DatapoolEquivalenceClass) dp.constructEquivalenceClass();
ec.setDescription("created by
test script");
ec.setName("Default");
dp.appendEquivalenceClass(ec);
return ec;
}
3.得到指定的行.这个方法那,就是把你指定的行,所有的值都拿出来,由separator(你自己想要的分隔符,比如",")分隔开,组成一个字符串返回给你.
public static String get_Row(Datapool dp, int row_number, String separator) {
String result = "";
DatapoolEquivalenceClass ec;
int count = dp.getVariableCount();
ec = get_Default_EC(dp, count);
DatapoolRecord dp_rec = (DatapoolRecord) ec.getRecord(row_number);
for (int i = 0; i < count; i++) {
result = result + dp_rec.getCell(i).getStringValue() + separator;
}
return result;
}
4.得到datapool的记录的总数(需要拿到DatapoolEquivalenceClass).
public static int get_RowCount(Datapool dp) {
@SuppressWarnings("unused")
String result = "";
DatapoolEquivalenceClass ec;
int count = dp.getVariableCount();
ec = get_Default_EC(dp, count);
return ec.getRecordCount();
}
protected static DatapoolEquivalenceClass get_Default_EC(Datapool dp, int var_count) {
DatapoolEquivalenceClass ec;
int count = dp.getEquivalenceClassCount();
if (count == 0) {
ec = (DatapoolEquivalenceClass) create_EC(dp);
// Create the variables
for (int i = 0; i < var_count; i++) {
DatapoolVariable var = (DatapoolVariable) dp.constructVariable();
var.setDescription("created by test script");
var.setRole(IDatapoolVariable.ROLE_INPUT_OUTPUT_DATA);
//var.setSuggestedType(0);
dp.appendVariable(var);
}
}
else
ec = (DatapoolEquivalenceClass) dp.getEquivalenceClass(dp.getDefaultEquivalenceClassIndex());
return ec;
}
随便唠叨点数据池的操作,但是我觉得,没什么意思 呵呵,因为实际中我更倾向于用excel之类的,如果你的RFT版本是8.1,那么恭喜你你可以完全使用上面的方法,如果你是8.2,那么很可惜,你应用上面的方法的时候就会出异常,因为RFT在升级的时候,有些更改,以前的org.eclipse.hyades.edit.datapool.*下面的有些类,运行时会出现异常,如果你想在8.2 的下面使用,并且不想编译的时候出问题,就请把tptp-models.jar添加你的project的path里面.我运行这些方法的时候遇到了异常,我没法解决.所以我更推荐你使用
其他的方式,无非是拿数据的地方换一个.
这个
日志,感觉不好写,因为就是些读取数据的方法,根本就没啥特别的.真不如你到网上找个现成的操作excel的工具类,改改 自己用就行啦,还方便,这种java操作的例子网上一大堆.
例子也只是给你个思路,剩下就要你自己来写啦.
好了结束了,下面的日志会写点关于校验点的.提前说一句,要想测试方便,最好全部自己写.