2017-07-02 12 views
1

添付のcsvイメージで、データをフェッチし、最初の列にあるテストケース名に基づいてハッシュマップを格納しようとしています。 2番目の列には、その特定のテストケースで使用可能なテストデータの数を示すrowcount値が与えられているので、rowcountの値を取得して、その特定のテストケースで利用可能なすべてのデータを取得することができます。 rowcountの値を取得するコードを記述しました。しかし、私はその特定のテストのためのデータをフェッチし、ハッシュマップに格納する方法はありません。私はテストケースのログイン用のデータをフェッチしたかったので、私は上記のコードでログインとテストケースの名前を与えた添付のcsv画像でJavaを使用して最初の列名に基づいてcsvファイルからデータを取得する方法

Click here to view CSV File Image

String path = "./TestData.csv"; 
String TestCaseName="Login"; 
String CurrentLine; 

try (BufferedReader br = new BufferedReader(new FileReader(path))) { 
    while ((CurrentLine = br.readLine()) != null) { 
     String Data[] = CurrentLine.split(","); 
     if(TestCaseName.equalsIgnoreCase(Data[0])){ 
      System.out.println("Details in this row :"+ " " +CurrentLine); 
      String rowcount_value = Data[1]; 
      System.out.println(rowcount_value); 
     } 
    } 
}  
catch (IOException e) { 
    e.printStackTrace(); 
} 

。そして今、私はログインテストケースに属する画像内のすべてのハイライトされたデータを取り出し、それをハッシュマップに保存したいと思います。上記のコードは、渡されたテストケース名のrowcount値を与えるだけです。

ハイライトされたデータをフェッチしてハッシュマップに保存してください。私はこの分野に新しいですし、事前に感謝します。

答えて

0

csvファイルのテストケースごとに固定数のデータポイントがあるため、テストケースを追加する場合は、次のコードを更新する必要があります。

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.HashMap; 
import java.util.Map; 

public class ReadCsv { 

public static void main(String[] args) { 

    String path = "sample.csv"; 
// String TestCaseName="Login"; 
    String CurrentLine; 

    //Map to store TestCase -> Map(Key ->value) 

    Map<String,Map<String,String>> testcaseMap = new HashMap<String,Map<String,String>>(); 
    try (BufferedReader br = new BufferedReader(new FileReader(path))) { 
     br.readLine(); 
     while ((CurrentLine = br.readLine()) != null) { 
      String Data[] = CurrentLine.trim().split(","); 
      String testCase_DataNames = ""; 
      for(int j=2;j<Data.length;j++){ 
       testCase_DataNames = testCase_DataNames +"_"+Data[j]; 
      } 
      int dataCount = Integer.parseInt(Data[1]); 
      Map<String,String> testdata = new HashMap<String,String>(); 
      for(int i=0;i<dataCount;i++){ 
       String nextLine = br.readLine(); 
       String feilds[] = nextLine.trim().split(","); 
       testdata.put(feilds[2], feilds.length ==4 ? feilds[3]:null); 

      } 
      testcaseMap.put(Data[0]+testCase_DataNames, testdata); 
      /*if(TestCaseName.equalsIgnoreCase(Data[0])){ 
       System.out.println("Details in this row :"+ " " +CurrentLine); 
       String rowcount_value = Data[1]; 
       System.out.println(rowcount_value); 
      } */ 
     } 


     for(Map.Entry<String,Map<String,String>> entry:testcaseMap.entrySet()){ 
      String key[] = entry.getKey().split("_"); 
      System.out.println("Test case for:"+key[0]); 

       for(Map.Entry<String, String> dataPair: entry.getValue().entrySet()){ 
        System.out.println("Data header:"+key[1]+" with value:"+dataPair.getKey()); 
        if(dataPair.getValue()!= null) { 
         System.out.println("Data header:"+key[2]+" with value:"+dataPair.getValue()); 
        } 

      } 

     } 
    }  
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 

出力:

Test case for:Login 
Data header:UserName with value:uname2 
Data header:Password with value:pwd2 
Data header:UserName with value:uname1 
Data header:Password with value:pwd1 
Test case for:Hotel 
Data header:HotelNames with value:Ambur 
Data header:HotelNames with value:BlackPerl 
Data header:HotelNames with value:Zingro 

が、これはあなたのために働くことを願っています!幸運

+0

ありがとうNagaraj、それは要件ごとに動作します。 – kamal

+0

カマル - 答えとupvoteを受け入れてください。楽しい ! –

関連する問題