Package cn.baiweigang.qtaf.ift.testcase.format

Source Code of cn.baiweigang.qtaf.ift.testcase.format.FormatCase

package cn.baiweigang.qtaf.ift.testcase.format;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;

import cn.baiweigang.qtaf.ift.IftConf;
import cn.baiweigang.qtaf.ift.testcase.IftTestCase;
import cn.baiweigang.qtaf.toolkit.util.FileUtil;
import cn.baiweigang.qtaf.toolkit.util.LogUtil;

/**
* 功能说明:格式化测试用例数据, 目前只支持读取excel格式数据,XML、数据库等后续扩展
* @author @<a href='http://weibo.com/bwgang'>bwgang</a>(bwgang@163.com)<br/>
*/
public class FormatCase {

  private static LogUtil log=LogUtil.getLogger(FormatCase.class);//日志记录

  private List<LinkedHashMap<String, String>> arrCase;
  private List<IftTestCase> testCase;
  private String url;
  private String httpMethod;
  private int argcount;
  private String cookie;
  private String casesetName;
  private String sheetName;
 
  /**
   * 构造函数
   */
  public FormatCase() {
    this.arrCase = new ArrayList<LinkedHashMap<String, String>>();
    this.testCase = new ArrayList<IftTestCase>();
    this.url = "";
    this.httpMethod = "";
    this.argcount = 0;
    this.cookie = "";
    this.casesetName = "";
    this.sheetName = "";
  }
 
  /**
   * 从数据文件中读取测试用例
   * @param casePath
   * @param sheetName
   */
  public void FormatCaseFromObj(String casePath,String sheetName) {
    this.FormatCaseFromExcel(casePath,sheetName);
    this.casesetName = casePath.substring(casePath.lastIndexOf("/") + 1,casePath.length() - (FileUtil.getExtensionName(casePath).length()+1));
    this.sheetName=sheetName;
  }

  /**
   *
   * @param pathName
   * @param sheetIndex
   */
  private void getTestCaseFromExcel(String pathName,String sheetName) {
    // 记录读取到的用例数据信息
    ReadCaseFromExcel readCase = new ReadCaseFromExcel(pathName,sheetName);
    // 读取表表信息
    url = readCase.readUrl();
    httpMethod = readCase.readHttpMethod();
    argcount = readCase.readArgCount();// 参与sign计算的参数个数
    this.cookie = readCase.readCookie();
    String[] argKey = readCase.readArgKey();// 获取参数key
    // 设置测试集名称,Excel中未存储,从判断传入的path为excel时设置
    // casesetName=readcase();
    // 获取用例数据
    for (int j = IftConf.paramStartRow; j < readCase.getRowNum(); j++) {
      IftTestCase tempcase = new IftTestCase();
      tempcase.setArgCount(getArgcount());
      tempcase.setHttpMethod(getHttpMethod());
      tempcase.setUrl(getUrl());
      tempcase.setCookie(this.cookie);
      // 读取【j+1】行的数据
      String[] argValue = readCase.readArgValue(j);
//      System.out.print("行:"+j+"    参数个数"+argValue.length+argValue[1]+"\n");
      if (!argValue[IftConf.isRunCol].equals("Y")) {
        continue;
      } else {
        // 把数据和标题一一对应存入LinkedHashMap有序键值对中
        LinkedHashMap<String, String> mycase = new LinkedHashMap<String, String>();
        for (int i = 0; i < argKey.length; i++) {
          // 判断此条记录是否有cookie参数,如果有且不为空替换全局cookie
          if (null != argValue[i] && argKey[i].equals("cookie") && argValue[i].length() > 0) {
            tempcase.setCookie(argValue[i]);
          }
          mycase.put(argKey[i], argValue[i]);
        }
        arrCase.add(mycase);
        tempcase.setCaseMap(mycase);
        tempcase.setCaseId(mycase.get("CaseID"));
        tempcase.setTestPoint(mycase.get("TestPoint"));
      }
      this.testCase.add(tempcase);
    }
  }

  /**
   * 功能:格式化Excel格式的测试用例
   *
   * @param   casefilepath  读取Sheet1表格
   */
  public void FormatCaseFromExcel(String casefilepath) {
    // 记录读取到的用例数据信息
    getTestCaseFromExcel(casefilepath, "Sheet1");

  }

  /**
   * 功能:格式化Excel格式的测试用例
   *
   * @param casefilepath
   * @param casesheetname 如果为空,默认读取Sheet1
   */
  public void FormatCaseFromExcel(String casefilepath, String casesheetname) {
    if (null==casesheetname | casesheetname.length()<1) {
      casesheetname="Sheet1";
    }
    getTestCaseFromExcel(casefilepath, casesheetname);
  }

  /**
   * 功能:格式化Xml格式的测试用例
   *
   * @param casefilepath
   */
  public void FormatCaseFromXml(String casefilepath) {
   
  }

  /**
   * @return the arrCase
   */
  public List<LinkedHashMap<String, String>> getArrCase() {
    return arrCase;
  }

  /**
   * @return the testCase
   */
  public List<IftTestCase> getTestCase() {
    return testCase;
  }

  /**
   * @return the url
   */
  public String getUrl() {
    return url;
  }

  /**
   * @return the httpMethod
   */
  public String getHttpMethod() {
    return httpMethod;
  }

  /**
   * @return the argcount
   */
  public int getArgcount() {
    return argcount;
  }

  /**
   * @return the cookie
   */
  public String getCookie() {
    return cookie;
  }

  /**
   * @return the casesetName
   */
  public String getCasesetName() {
    return casesetName;
  }

  public String getSheetName() {
    return sheetName;
  }


}
TOP

Related Classes of cn.baiweigang.qtaf.ift.testcase.format.FormatCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.