2016-05-07 21 views
0

Allure Bericht Generation hat für mich in den letzten paar Wochen zu scheitern begonnen. Ich erhalte einen "Closed Stream" -Fehler in der folgenden Zeile in meiner hooks.rb-Datei, mit der ich einen Screenshot bei einem Szenarioausfall mache. Hier sind ein paar relevanten Linien vom Rubin File-Anfügen von Dateien, um Bericht mit Gurkenausfall mit einem "Closed Stream" Fehler zu verlocken

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 

Der Reiz Bericht Generation wegen der letzten Zeile versagt

AllureCucumber::DSL.attach_file("#{scenario.name}.png -FAILURE Screenshot", path) if ENV['ALLURE']=='true' 

die die Screenshot-Datei auf den Bericht legt die Worte „IOError Closed Stream“ . Was läuft hier falsch?

+1

Ich würde ein paar Dinge überprüfen. Stellen Sie sicher, dass der Server seine Leistungsfähigkeit nicht erreicht. Stellen Sie sicher, dass die Dateien nicht vom Server blockiert werden, da sie zu groß sind. Und stellen Sie sicher, dass die Datei in dem Moment zugänglich ist, in dem Sie sie lesen. –

Antwort

0

habe ich mehr Untersuchung und fand heraus, dass die line-

AllureCucumber::DSL.attach_file("#{scenario.name}.png -FAILURE Screenshot", path) if ENV['ALLURE']=='true' 

tatsächlich bezieht sich auf die attach_file Methode in Capybara gem -

[https://github.com/jnicklas/capybara/blob/master/lib/capybara/node/actions.rb][1]

und scheitern.

benutzte ich hebeln und debuggt this-

[1] pry(#)> AllureCucumber::DSL.attach_file("#{scenario.name} -FAILURE Screenshot", path) #if ENV['ALLURE']=='true' IOError: closed stream from /Users/rv/.rvm/gems/ruby-2.2.0/gems/capybara-2.5.0/lib/capybara/node/actions.rb:154:in each' [2] pry(#)> attach_file("#{scenario.name} -FAILURE Screenshot", path) #if ENV['ALLURE']=='true' IOError: closed stream from /Users/rv/.rvm/gems/ruby-2.2.0/gems/capybara-2.5.0/lib/capybara/node/actions.rb:154:ineach'

endlich herausgefunden zu bekommen, dass dies geschieht, wurde als eines der Schritt Definitionsdateien eine Bibliothek für Capybara enthalten hatte, die die attach_file Methode überschrieben wurde.