如何实现获取标签并将场景作为参数传递的 AfterStep?
How to implement an AfterStep getting the Tag and passing the scenario as an argument?
我正在寻找一种方法来实现将场景作为参数传递的 AfterStep(@tag)。不幸的是,这不起作用,我找不到办法。
我也调查了 Cucumber Hooks documentation,但这也没有帮助。
我尝试实现的方式:
AfterStep('@screenshot') do |scenario|
# Add screenshot to baseline folder.
@helper = Helper.new
@helper.take_screenshot(scenario.name, 'screenshots/baseline')
end
当我 运行 测试时,我得到这个错误:
undefined method `name' for #<Cucumber::Core::Test::Result::Passed:0x007f2b818e6d50> (NoMethodError)
这里的objective是用@screenshot标签对场景进行截图
正如@Sam 指出的那样,使用 After('@screenshot') do |scenario|
对我有用。
After('@screenshot') do |scenario|
output_folder = (ENV["output_folder"] || "features/output") + "/" + ENV['TIMESTAMP'][0,10]
scenario_folder = output_folder + '/' + 'failure screenshots' + '/'
if scenario.respond_to? (:title)
script_name = scenario.name
else
script_name = scenario.scenario_outline.title
end
screenshot_file = scenario_folder + script_name.gsub(/[\/\| <>\n\r]+/, "_")[0..90] + ".png"
current_path = ''
begin
screenshot_file.split(/\//).map{|m| m.split(/\/)}.flatten.each {|folder|
next if folder =~ /\.png/
current_path += folder + "/"
next if folder.downcase =~ /:/
Dir.mkdir(current_path) unless File.exists?(current_path)
}
@browser.screenshot.save screenshot_file
embed screenshot_file, 'image/png'
rescue Exception => e
p e.message
p "Could not capture screenshot"
end
end
我正在寻找一种方法来实现将场景作为参数传递的 AfterStep(@tag)。不幸的是,这不起作用,我找不到办法。
我也调查了 Cucumber Hooks documentation,但这也没有帮助。
我尝试实现的方式:
AfterStep('@screenshot') do |scenario|
# Add screenshot to baseline folder.
@helper = Helper.new
@helper.take_screenshot(scenario.name, 'screenshots/baseline')
end
当我 运行 测试时,我得到这个错误:
undefined method `name' for #<Cucumber::Core::Test::Result::Passed:0x007f2b818e6d50> (NoMethodError)
这里的objective是用@screenshot标签对场景进行截图
正如@Sam 指出的那样,使用 After('@screenshot') do |scenario|
对我有用。
After('@screenshot') do |scenario|
output_folder = (ENV["output_folder"] || "features/output") + "/" + ENV['TIMESTAMP'][0,10]
scenario_folder = output_folder + '/' + 'failure screenshots' + '/'
if scenario.respond_to? (:title)
script_name = scenario.name
else
script_name = scenario.scenario_outline.title
end
screenshot_file = scenario_folder + script_name.gsub(/[\/\| <>\n\r]+/, "_")[0..90] + ".png"
current_path = ''
begin
screenshot_file.split(/\//).map{|m| m.split(/\/)}.flatten.each {|folder|
next if folder =~ /\.png/
current_path += folder + "/"
next if folder.downcase =~ /:/
Dir.mkdir(current_path) unless File.exists?(current_path)
}
@browser.screenshot.save screenshot_file
embed screenshot_file, 'image/png'
rescue Exception => e
p e.message
p "Could not capture screenshot"
end
end