使用黄瓜失败并出现“封闭流”错误,将文件附加到诱惑报告中

时间:2016-05-07 17:32:46

标签: ruby cucumber allure

过去几周,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”。这里出了什么问题?

1 个答案:

答案 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 方法。