2017-07-03 192 views
1

我有一個日誌文件,它是Nunit Runner的日誌輸出篩選日誌文件

我想通過解析文件來提取數據;

下面是示例日誌文件: Log File Contents

我想提取測試計數,通過和失敗的測試

如何使用正則表達式來獲取數據。

我使用模式和掃描儀類來掃描數據。

這裏是我用來讀取文件 Function to Read File

更新示例功能:

我已經用下面的代碼中提取測試結果,我想對這個代碼的建議:

public int FilterLogFile(File LogFile) { 
    int TestCount = 0; 
    try { 


     String Line = ""; 
     BufferedReader br = new BufferedReader(new FileReader(LogFile)); 
     while ((Line = br.readLine()) != null) { 
      Scanner scanner = new Scanner(Line); 
      String line = scanner.findInLine(".*(Test Count:)\\s+\\d+\\D+\\s+.*(Passed:)\\s+\\d+\\D+\\s+.*(Failed:)\\s+\\d+"); 
      if (line != null) { 
       System.out.println("Detected Line: " + line); 
       TestCount = ExtractData(Line); 
       break; 
      } else { 
       continue; 
      } 
     } 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

    return TestCount; 
} 

private int ExtractData(String strLine) { 
    int Count = 0; 
    try { 

     String[] Data = strLine.split(","); 
     for (String str : Data) { 
      if (str.contains("Test Count:")) { 
       int value = Integer.parseInt(str.replaceAll("[^0-9]", "")); 
       Count = value; 
       System.out.println(value); 
       break; 
      } 
     } 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
    return Count; 
} 

樣本記錄我的工作是:

Log File Contents

+0

發佈文字圖像的相反,你可能要發佈文字代替(有標記代碼等)。另外,你到目前爲止做了什麼?你會如何嘗試提取數據?你對正則表達式有什麼瞭解? (如果你不太瞭解,我建議你先拿一些關於這些的教程,然後自己嘗試一下)。 – Thomas

+0

我建議您從NUnit生成的xml結果文件中解析這些信息。日誌輸出在未來的NUnit版本中可能會更改。 – Chris

回答

0

我希望這有助於你,

利用這一點,

a = "[test run server,overall result: Failed, Test count:09, Passed: 14, Failed: 1, skipped: 16, start: 1, end: 10, asd: asd,akdsu]" 

/Test.+.(?:Failed:.\d+)/ 

正則表達式:爲/Test.+.(?:Failed:.\d+)/