纳品小工具(根据文件一览从工程中取文件,包括testcase和testcase数据文件)

import java.io.BufferedInputStream;


public class testNouhinTool {

 /**
  * @param args
  */
 public static void main(String[] args) {
  
  String ORG_DIRECTORY = "F:\\testNouhiuTool";
  String ORG_PATH = "F:\\";
  String DEST_PATH = "E:\\";
  String READ_FILE = "F:\\test.txt";
  
  // Create Directory
  createDirectory(ORG_DIRECTORY, ORG_PATH, DEST_PATH);
  
  // Copy File
  copyAllFileInOrgdirectory(ORG_DIRECTORY, ORG_PATH, DEST_PATH, READ_FILE);
 }

 private static void copyAllFileInOrgdirectory(String ORG_DIRECTORY,
   String ORG_PATH, String DEST_PATH, String READ_FILE) {
  
  String testcase = "";
  String testcaseFolder = "";
  boolean fileFoundFlg = false;
  boolean testcaseFoundFlg = false;
  boolean folderFoundFlg = false;
  
  try {
   BufferedReader bf = new BufferedReader(new FileReader(READ_FILE));
   String line = bf.readLine();
   
   while(line != null) {
    
    // System.out.println(line + "  is in file");
    if (line.indexOf("\\") != -1) {
     
     line = line.substring(line.lastIndexOf("\\")+1);
    } else if (line.indexOf("/") != -1) {
     
     line = line.substring(line.lastIndexOf("/")+1);
    }
    
    if (isRule(line)) {
     
     testcase = line.substring(0, line.indexOf(".")).concat("Test.java");
     testcaseFolder = line.substring(0, line.indexOf("."));
    }
    
    File findParentPath = new File(ORG_DIRECTORY);
    Stack<File> findByStack = new Stack<File>();
    findByStack.add(findParentPath);
    
    while(!findByStack.isEmpty()){
     
     File tmpFilePath = findByStack.pop();
     File[] tmpFileNameArray = tmpFilePath.listFiles();
     
     for(File tmpFileName : tmpFileNameArray){
      
      if(tmpFileName.isDirectory()){
       
       findByStack.push(tmpFileName);
       
       if (!"".equals(testcaseFolder) && tmpFileName.getName().equals(testcaseFolder)) {
        
        // System.out.println(tmpFileName.getName() + "  is data directory");
        Stack<File> dataStack = new Stack<File>();
        dataStack.add(tmpFileName);
        
        while (!dataStack.isEmpty()) {
         
         File dataFolderPath = dataStack.pop();
         File[] dataFiles = dataFolderPath.listFiles();
         
         for (File dataFile : dataFiles) {
          
          if (dataFile.isDirectory()) {
           
           dataStack.push(dataFile);
           
          } else if (dataFile.isFile()) {
           
           copyFile(ORG_PATH, DEST_PATH, dataFile);
          }
         }
        }
        folderFoundFlg = true;
       }
       
      } else if (tmpFileName.isFile()){
       
       // find rulefile
       if(tmpFileName.getName().equals(line)){
        
        copyFile(ORG_PATH, DEST_PATH, tmpFileName);
           fileFoundFlg = true;
       }
       
       // find testcase
                            if(tmpFileName.getName().equals(testcase)){
        
        copyFile(ORG_PATH, DEST_PATH, tmpFileName);
           testcaseFoundFlg = true;
       }
      }
     }
    }
    
    if (isRule(line)) {
     
     if (!testcaseFoundFlg) {
      System.out.println(testcase + "  is not in directory");
     }
     
     if (!folderFoundFlg) {
      System.out.println(testcaseFolder + " data folder is not in directory");
     }
     
     testcase = "";
     testcaseFolder = "";
    }
    
    if (!fileFoundFlg) {
     System.out.println(line + " is not in directory");
    }
    
    fileFoundFlg = false;
    testcaseFoundFlg = false;
    folderFoundFlg = false;
    line = bf.readLine();
   }
   bf.close();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 private static void createDirectory(String ORG_DIRECTORY, String ORG_PATH,
   String DEST_PATH) {
  
  File path = new File(ORG_DIRECTORY);
  Stack<File> tmpStack = new Stack<File>();
  tmpStack.add(path);
  
  while(!tmpStack.isEmpty()){
   
   File tmpStackFile = tmpStack.pop();
   
   if(tmpStackFile.isDirectory()){
    
    // System.out.println(tmpFile.getAbsolutePath());
    if(!new File(tmpStackFile.getAbsolutePath().replace(ORG_PATH, DEST_PATH)).exists()){
     
     new File(tmpStackFile.getAbsolutePath().replace(ORG_PATH, DEST_PATH)).mkdirs();
    }
   }
   File[] files = tmpStackFile.listFiles();
   
   for (File tmpFile : files ) {
    if(tmpFile.isDirectory()){
     // System.out.println(files[i].getAbsolutePath());
     tmpStack.push(tmpFile);
    }
   }
  }
 }

 private static void copyFile(String ORG_PATH, String DEST_PATH,
   File tmpFileName) throws FileNotFoundException, IOException {
  
  // System.out.println(tmpFileName.getName() + "  is in directory");
  // tmpFileName.renameTo(
  //  new File(tmpFileName.getAbsolutePath().replace("F:", "E:\\testNouhiuTool")
  BufferedInputStream bin = new BufferedInputStream(
    new FileInputStream(tmpFileName));
  BufferedOutputStream bout = new BufferedOutputStream(
    new FileOutputStream(
      new File(tmpFileName.getAbsolutePath().replace(ORG_PATH, DEST_PATH))));
  int b = 0;
  
  while ((b = bin.read()) != -1) {
   bout.write(b);
  }
  
  bout.flush();
  bin.close();
  bout.close();
 }

 private static boolean isRule(String line) {
  return (line.indexOf("CHRCAL") != -1 || line.indexOf("CHRCHK") != -1 || line.indexOf("CHRSEL") != -1) &&
    line.indexOf("IF") == -1 && line.indexOf("Cib") == -1;
 }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,HttpRunner 4.3 可以使用 YAML 文件来创建测试用例套件(suite),并且套件中可以包含其它的测试用例(testcase)。您可以通过以下步骤来实现: 1. 在您的项目根目录下创建一个名为 `testsuites` 的文件夹,用于存放测试用例套件的 YAML 文件。 2. 在 `testsuites` 文件夹下创建一个 YAML 文件,例如 `suite_demo.yaml`,并编写测试用例套件的内容。示例: ```yaml config: name: Demo测试套件 variables: base_url: http://httpbin.org testcases: - name: 测试用例1 variables: path: /get request: url: ${base_url}${path} method: GET validate: - assert status_code == 200 - name: 测试用例2 variables: path: /post data: name: tester request: url: ${base_url}${path} method: POST headers: Content-Type: application/json json: ${data} validate: - assert status_code == 200 suites: - name: Demo测试套件 - 套件1 testcases: - testcases/xxx.yaml - testcases/yyy.yaml - name: Demo测试套件 - 套件2 testcases: - testcases/zzz.yaml - testcases/www.yaml ``` 3. 在 `suites` 节点中定义测试用例套件,并将其它测试用例(testcase)添加到 `testcases` 列表中。您可以通过 `name` 属性来定义测试用例套件的名称。示例中定义了两个测试用例套件,每个套件包含两个测试用例。 4. 在命令行中执行以下命令来运行测试用例套件: ```bash hrun testsuites/suite_demo.yaml ``` 这样,HttpRunner 就会根据 YAML 文件中的内容生成测试用例套件,并执行所有的测试用例。注意,定义在 `suites` 节点中的测试用例套件会覆盖 `testcases` 节点中定义的测试用例,因此在实际使用时需要根据需求进行合理的组织。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值