gpt4 book ai didi

ruby - 使用 parallel_tests 运行时如何生成 html 报告?

转载 作者:数据小太阳 更新时间:2023-10-29 07:32:02 24 4
gpt4 key购买 nike

我正在使用 parallel_tests 并行运行一堆 rspec 测试框架。在并行化测试之前,我将测试结果输出到一个 html 文件中,如下所示:

rspec --format html --out tmp/index.html <pattern>

现在看起来更像是这样:

parallel:spec --format html --out tmp/index.html <pattern>

但是,既然测试是并行运行的,每个测试都会生成自己的 html 文件,并且由于它们都使用相同的路径 (tmp/index.html),最后一个完成的测试会覆盖输出的 html 文件,并且我只剩下那一次测试的报告。我怎样才能生成一个包含我所有测试的汇总结果的 html 文件(这将是理想的)?如果那不可能,我如何将每个测试输出到它自己的输出 html 文件,这样它们就不会互相覆盖?

我尝试使用 parallel_test 项目中的内置记录器(ParallelTests::RSpec::RuntimeLogger、ParallelTests::RSpec::SummaryLogger 和 ParallelTests::RSpec::FailuresLogger),但这些都只是生成简单的文本文件像 rspec 那样的漂亮的 html 文件。我也看到了这个问题here但我没有使用 cucumber ,所以这并不适用于我。我试着把 --format html --out tmp/report<%= ENV['TEST_ENV_NUMBER'] %>.html在我的 .rspec_parallel文件,但这没有任何效果。

最佳答案

我不得不编写自己的格式化程序,这里是代码以防其他人遇到这个问题:

require 'fileutils'
RSpec::Support.require_rspec_core "formatters"
RSpec::Support.require_rspec_core "formatters/helpers"
RSpec::Support.require_rspec_core "formatters/base_text_formatter"
RSpec::Support.require_rspec_core "formatters/html_printer"
RSpec::Support.require_rspec_core "formatters/html_formatter"

# Overrides functionality from base class to generate separate html files for each test suite
# https://github.com/rspec/rspec-core/blob/master/lib/rspec/core/formatters/html_formatter.rb
class ParallelFormatter < RSpec::Core::Formatters::HtmlFormatter

RSpec::Core::Formatters.register self, :start, :example_group_started, :start_dump,
:example_started, :example_passed, :example_failed,
:example_pending, :dump_summary

# TEST_ENV_NUMBER will be empty for the first one, then start at 2 (continues up by 1 from there)
def initialize(param=nil)
output_dir = ENV['OUTPUT_DIR']
FileUtils.mkpath(output_dir) unless File.directory?(output_dir)
raise "Invalid output directory: #{output_dir}" unless File.directory?(output_dir)

id = (ENV['TEST_ENV_NUMBER'].empty?) ? 1 : ENV['TEST_ENV_NUMBER'] # defaults to 1
output_file = File.join(output_dir, "result#{id}.html")
opened_file = File.open(output_file, 'w+')
super(opened_file)
end

end

关于ruby - 使用 parallel_tests 运行时如何生成 html 报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25090410/

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