我正在尝试多次(30)次运行一个场景以获得一个很好的统计样本。但是该块只执行一次;每次后续时间都会导致场景被调用而不是执行(尽管它说场景确实在大约 5 毫秒的时间内成功完成)。
Around('@mass_benchmark') do |scenario, block|
$seconds_taken = "SECONDS TAKEN NOT SET"
@time_array = []
30.times do
before_hook(scenario)
block.call
after_hook(scenario)
@time_array << $seconds_taken
end
write_time_array_to_file(@time_array, scenario_name)
end
标签@mass_benchmark 执行这个块,而不是~@mass_benchmark,它只是正常执行场景。before_hook 和 after_hook 方法复制了 Before ('~@mass_benchmark') 和 After ('~@mass_benchmark') 挂钩(实际上只是调用相同的方法)。
变量 $seconds_taken 围绕我正在计时的特定区域设置。我没有安排整个测试,只是其中的一个关键部分;测试的其余部分已经到了这一点,等等,这不是计时部分的一部分,所以我不能只是将计时部分移到这个之外。
问题可能与我在这些方法中所做的事情有关,但据我所知,一切正常(如放置良好的 puts 语句所示)。任何想法表示赞赏!