0

我希望我的测试能够保存所有失败场景的屏幕截图。

我找到了一篇关于这个问题的好帖子“ Watir-webdriver:为所有失败的场景获取相同的屏幕截图”,我将贾斯汀建议的代码放在我的 env.rb 中,但效果不佳。我不确定这是不是因为我没有使用 Cucumber?

给定一个典型的示例测试用例,我有:

require "rubygems"
require "test/unit"
require "watir-webdriver"
require "page-object"
require "./home_page"


class LogInTest < Test::Unit::TestCase
  # Called before every test method runs. Can be used
  # to set up fixture information.
  def setup
    @browser ||= Watir::Browser.new :firefox
  end

  # Called after every test method runs. Can be used to tear
  # down fixture information.

  def teardown
    @browser.close
  end

  # Fake test
  def test_fail
    @home_page = HomePage.new(@browser)
    @home_page.visit
    @log_in_page = @home_page.go_to_log_in
    @all_deals = @log_in_page.log_in("test_user","test_pass")
    assert @browser.title.include? "- hello world"
  end
end

如何制作通用方法将失败测试的所有屏幕截图保存到目标文件夹?

非常感谢您的宝贵时间。

4

1 回答 1

1

你是对的,因为你引用的问题是为 Cucumber 编写的,所以它不起作用。但是,同样可以适用于 Test::Unit。

尝试切换teardown到:

def teardown
  #Save image if test fails
  unless passed?
    #Where to save the image and the file name
    screenshot_file = "screenshot-#{Time.now.strftime('%Y%m%d-%H%M%S')}.png"

    #Save the image
    @browser.driver.save_screenshot(screenshot_file)
  end

  #Close the browser
  @browser.close
end
于 2013-10-20T19:55:59.220 回答