PoolLoad.java: 传入文件位置,初始化 RPTDataPool
文件只包括一行,就是调用 RPTDataPool 的构造函数:
static RPTDataPool pool1 = new RPTDataPool("c:\\pool1.txt");
|
getLine.java: 每个 RPT 的 Test 中,在需要数据池前需要插入的代码,用于把当前用户对应的数据池记录通过一行返回给 Test
public String exec(ITestExecutionServices tes, String[] args) {
// 调用 PoolLoad 中初始化的 pool1 的 getDataPoolItemLine 的方法返回当前行然后把 line 返回给 Test
String line = PoolLoad.pool1.getaDataPoolItemLine();
return line;
}
|
getName.java: 从返回的行中取出需要的字段 ,每个变量对应着一个 get 方法,比如 getName, getPassword 等 。
public String exec(ITestExecutionServices tes, String[] args) {
// 从参数中读出记录行到 line
StringTokenizer st = new StringTokenizer(line,",");// 转换成 StringTokenizer
while (st.hasMoreTokens()) {
if (i == index) { // 匹配需要的字段
name = st.nextToken(); // 把相应的字段赋值
break;
}
i++;
}
|

关键代码的解释:
RPTDataPool.java:主要用于将记录以分页的形式从文件中读入到 ArrayList 中
首先定义需要的变量:
Private String DataPoolFileName;// 定义数据池文件存放的位置,运行时会由 PoolLoad.java 装入
private ArrayList DataPool;// 存放每次从数据池中读出的记录
private int cursor = 0;// 当前记录的光标
static private int pageno = 1;// 根据每页的大小 (PageSize), 目前光标停在哪页
private int pagesize = 500;// 每次 load 进 DataPool 的记录数量
|
构造函数 RPTDataPool:
调用 fillPageByLine 方法,把文件的第一个页面存入到变量 DataPool 中来。
public RPTDataPool(String fileName ) {
……
fillPageByLine( DataPoolFileName, DataPool, 1);
}
|
fillPageByLine: 每次到了页面的记录末尾,都会被调用,从而把相关的记录读到 DataPool 中来。
private boolean fillPageByLine(String fileName, ArrayList FileLines, int Pageno) {
// 通过 ReadLine 读文件 ;
while (line !=null) {
// 当前行数在关注的页面中, pageno 通过参数传入
if ((lineno>=pagesize*(Pageno-1))&&(lineno<pagesize*Pageno)) {
FileLines.add(line);// 把当前记录加入 ArrayList
line=br.readLine();// 记录下移
lineno++;// 行数增加
} else if (lineno<pagesize*(Pageno-1)) {// 当前行数还没到关注的页面
line=br.readLine();// 记录下移
lineno++;// 行数增加
} else if (lineno >= pagesize*(Pageno)) {// 当前行数超过关注的页面
break;// 退出
}
}
|
PoolLoad.java: 传入文件位置,初始化 RPTDataPool
文件只包括一行,就是调用 RPTDataPool 的构造函数:
static RPTDataPool pool1 = new RPTDataPool("c:\\pool1.txt");
|
getLine.java: 每个 RPT 的 Test 中,在需要数据池前需要插入的代码,用于把当前用户对应的数据池记录通过一行返回给 Test
public String exec(ITestExecutionServices tes, String[] args) {
// 调用 PoolLoad 中初始化的 pool1 的 getDataPoolItemLine 的方法返回当前行然后把 line 返回给 Test
String line = PoolLoad.pool1.getaDataPoolItemLine();
return line;
}
|
getName.java: 从返回的行中取出需要的字段 ,每个变量对应着一个 get 方法,比如 getName, getPassword 等 。
public String exec(ITestExecutionServices tes, String[] args) {
// 从参数中读出记录行到 line
StringTokenizer st = new StringTokenizer(line,",");// 转换成 StringTokenizer
while (st.hasMoreTokens()) {
if (i == index) { // 匹配需要的字段
name = st.nextToken(); // 把相应的字段赋值
break;
}
i++;
}
|