gpt4 book ai didi

ruby - 如何将测试报告日志文件转换为 Jenkins Junit XML 文件格式?

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:00 24 4
gpt4 key购买 nike

我被分配了一项与 Ruby 相关的任务,但由于我是新手,我正在互联网上搜索合适的解决方案来解决它:

  1. 我在网页中有一个日志文件报告列表,实际上分为通过或失败。
  2. 我需要获取日志文件并将它们转换为与 Jenkins Junit XML 文件格式兼容的格式。
  3. 一切,从日志到 XML 的段落都必须用 Ruby 编写。

有什么想法吗?!

我在 Internet 上到处查找并找到了信息,但仍然不清楚如何解决这个问题。

是否有任何 Ruby 库可以使这更容易?有没有人处理过这样的事情?

最佳答案

你没有显示你需要的格式,我不知道 Jenkins 需要什么,但是创建 XML 很容易。不幸的是,你想要的东西需要一本书或几篇文章,这超出了 Stack Overflow 的范围。虽然基本上...

您可以使用模板系统,例如 ERB为整个 XML 文档创建模板的位置,或 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::Builder:

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>

关于ruby - 如何将测试报告日志文件转换为 Jenkins Junit XML 文件格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13862554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com