2012-12-13 36 views
2

我被分配一個任務做了Ruby,但由於我是新來這,我搜索在互聯網上,爲妥善解決來解決這個問題:如何將測試報告日誌文件轉換爲Jenkins Junit XML文件格式?

  1. 我的日誌文件的列表網頁中的報告實際分爲合格或不合格。
  2. 我需要將日誌文件轉換成與Jenkins Junit XML文件格式兼容的格式。
  3. 所有內容,從日誌到XML的內容都必須用Ruby編寫。

有什麼想法?

我看遍了整個互聯網,發現信息,但仍然沒有明確的想法如何解決這個問題。

是否有任何Ruby庫使這更容易? 有沒有人處理過這樣的事情?

+0

還有幾個其他的問題(包括http://stackoverflow.com/questions/4922867/junit-xml -format-specification-that-hudson-supports),它解決了#2需要的XML格式。 –

回答

1

您不顯示您需要的格式,我不知道Jenkins需要什麼,但創建XML非常簡單。不幸的是,你想要的只是一本書或者幾篇文章,這些超出了Stack Overflow的範圍。基本上,雖然...

您可以使用模板系統,在那裏像你爲你的整個XML文檔模板ERB,或Nokogiri::Builder可以用來生成XML,或者你可以做到這一點的老同學,並使用簡單的字符串插值創建你的XML。

一個系統日誌文件通常結構相當好,至少在前幾個字段中,後跟自由格式文本,這是各種命令的輸出。 Apache的日誌文件與文本列相似,後面跟着一些自由形式,但易於解析的文本。這裏和那裏有寶石,以及關於如何解析日誌的教程,所以搜索一下,你會發現一些東西。這個想法是你想要將每一行讀入分解爲XML節點的文本。

一旦你有了你的領域,你可以將它們替換成模板,或者讓Ruby將變量插入到字符串中,或​​者使用Builder在標籤之間添加文本。

這不是很難,但要完成幾項小任務。

使用字符串插值,如果你想XML這樣的:

<xml> 
    <tag1> 
    <tag2>some text</tag2> 
    <tag2>some more text</tag2> 
    </tag1> 
</xml> 

你可以創建它想:

var1 = "some text" 
var2 = "some more text" 
xml = %Q{ 
<xml> 
    <tag1> 
    <tag2>#{var1}</tag2> 
    <tag2>#{var2}</tag2> 
    </tag1> 
</xml> 
} 
puts xml 

同樣,如果你想使用ERB:

require 'erb' 

var1 = "some text" 
var2 = "some more text" 

template = ERB.new <<-EOF 
<xml> 
    <tag1> 
    <tag2><%= var1 %></tag2> 
    <tag2><%= var2 %></tag2> 
    </tag1> 
</xml> 
EOF 
puts template.result(binding) 

哪些輸出:

<xml> 
    <tag1> 
    <tag2>some text</tag2> 
    <tag2>some more text</tag2> 
    </tag1> 
</xml> 

或者,使用引入nokogiri ::生成器:

require 'nokogiri' 

var1 = "some text" 
var2 = "some more text" 
builder = Nokogiri::XML::Builder.new do |node| 
    node.xml { 
    node.tag1 { 
     [var1, var2].each do |t| 
     node.tag2(t) 
     end 
    } 
    } 
end 
puts builder.to_xml 

,輸出:

<?xml version="1.0"?> 
<xml> 
    <tag1> 
    <tag2>some text</tag2> 
    <tag2>some more text</tag2> 
    </tag1> 
</xml> 
+0

謝謝你,無論如何,你已經與一些「起始提示」和建議寶貴!!!!!! :) – sc1789

相關問題