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++; } |