过去几周,Allure报告的生成已经开始失败。我在hooks.rb文件中的以下行收到“Closed Stream”错误,我用它来截取场景故障。以下是ruby文件中的一些相关行 -
def take_screenshot(scenario_name)
screenshots_path= 'artifacts/screenshots/'
unless File.directory?(screenshots_path)
FileUtils.mkdir_p(screenshots_path)
end
puts "scenario name is #{scenario_name}"
page.driver.browser.save_screenshot "#{screenshots_path}/#{scenario_name}.png"
end
*******
if scenario.failed?
path = take_screenshot(scenario.name)
puts "path to attach #{path}"
AllureCucumber::DSL.attach_file("#{scenario.name}.png -FAILURE Screenshot", path) if ENV['ALLURE']=='true'
end
由于最后一行
,诱惑报告生成失败AllureCucumber::DSL.attach_file("#{scenario.name}.png -FAILURE Screenshot", path) if ENV['ALLURE']=='true'
将屏幕截图文件附加到报告“IOError Closed Stream”。这里出了什么问题?
答案 0 :(得分:0)
我做了更多的调查,发现了这一行 -
AllureCucumber::DSL.attach_file("#{scenario.name}.png -FAILURE Screenshot", path) if ENV['ALLURE']=='true'
实际上是指capybara gem中的attach_file方法 -
[https://github.com/jnicklas/capybara/blob/master/lib/capybara/node/actions.rb][1]
然后失败。
我用pry和调试来得到这个 -
[1] pry(#)> AllureCucumber :: DSL.attach_file("#{scenario.name} -FAILURE 截图",路径)#if ENV [' ALLURE'] ==' true' IOError:封闭流 从 /Users/rv/.rvm/gems/ruby-2.2.0/gems/capybara-2.5.0/lib/capybara/node/actions.rb:154:in 每个' [2]撬(#)> attach_file("#{scenario.name} -FAILURE 截图",路径)#if ENV [' ALLURE'] ==' true' IOError:封闭流 从 /Users/rv/.rvm/gems/ruby-2.2.0/gems/capybara-2.5.0/lib/capybara/node/actions.rb:154:ineach'
最后发现这种情况正在发生,因为其中一个步骤定义文件有一个库包含的capybara,它覆盖了 attach_file 方法。