如何将SeleniumRubyWebDriver测试结果从ruby终端写入输出文件

如何将SeleniumRubyWebDriver测试结果从ruby终端写入输出文件,ruby,selenium,webdriver,rake,Ruby,Selenium,Webdriver,Rake,目前,我正在使用“用Ruby启动命令提示符”终端中的rake gem一次性运行测试套件(由selenium Ruby Webdriver编写)中的所有selenium脚本 要做到这一点,我必须创建一个名为“rakefile.rb”的文件,其中包含以下内容,然后在我的终端中调用“rake”:(根据我之前文章中一个人的指导,我已经知道了这一点) 但是,我不知道如何修改“rakefile.rb”,以便能够将执行每个失败测试(显示在我的终端上)的内容导出到每个输出文件?这意味着我希望执行每个脚本的内容将

目前,我正在使用“用Ruby启动命令提示符”终端中的rake gem一次性运行测试套件(由selenium Ruby Webdriver编写)中的所有selenium脚本

要做到这一点,我必须创建一个名为“rakefile.rb”的文件,其中包含以下内容,然后在我的终端中调用“rake”:(根据我之前文章中一个人的指导,我已经知道了这一点)

但是,我不知道如何修改“rakefile.rb”,以便能够将执行每个失败测试(显示在我的终端上)的内容导出到每个输出文件?这意味着我希望执行每个脚本的内容将写入输出文件,而不是显示在Ruby终端上(例如:当我运行测试脚本“test_GI-1.rb”时,执行此脚本的内容将写入输出文件“test_GI-1.rb.out”,而不是显示在我的终端上


将我的“rakefile.rb”修改为ruby file>>test.rb.out之类的东西,但它根本不起作用(只有在我的ruby终端上直接键入ruby test.rb>>output.out之类的东西时,它才起作用)。任何人都请给我指路。非常感谢。

我还没有尝试过这个,但我想这应该行得通

task :default do
FileList['test*.rb'].each { |file|
 begin
   system("ruby #{file} > #{file}.log")
  rescue
   puts "The following tests reported unexpected behavior:"
   puts "#{file} \n"
  end
}
end
根据新规定—

更新



再次感谢您的精彩回答,此解决方案解决了我的主要问题。但是,当使用“system”方法将所有内容写入输出日志文件时,“rescue”后的代码行将无法工作。因此,我无法在“console.out”中打印失败脚本的列表文件与以前一样。那么,你能给我一个方法,让所有输出文件都按照你的建议,但仍然能够在“console.out”文件中打印失败脚本的列表吗?非常感谢。我认为将每个脚本的结果导出到输出日志文件不会在终端上引发异常。因此,之后的代码行“rescue”不再工作,因此没有任何内容写入文件“console.out”。不过,我将尝试研究它。非常感谢您提供的优秀指导。@BATTERSHIP,您可以尝试故意使其中一个脚本失败,然后检查哪个文件是用什么编写的。我曾试图使一些脚本故意失败,但它们不是写入的console.out“文件,它意味着“rescue”之后的代码行不再工作。如果我只是使用代码行:“begin”之后的ruby文件(不包括导出结果到输出文件),失败脚本列表显示在“console.out”上"正如预期的那样。Rescue将只显示标准错误,而不显示标准输出。因此,如果脚本出现错误,则输出将写入console.out,但如果脚本因合法测试失败而失败,则输出将写入日志文件。我建议使用类似库的方法来解析测试结果并将其转换为Junit样式。这个测试报告几乎是一个标准的测试输出。
task :default do
FileList['test*.rb'].each { |file|
 begin
   system("ruby #{file} > #{file}.log")
  rescue
   puts "The following tests reported unexpected behavior:"
   puts "#{file} \n"
  end
}
end
task :default do
    logfile.new("console.out", "w")
    FileList['test*.rb'].each { |file|
     begin
       system("ruby #{file} > #{file}.log")
      rescue
       logfile.puts("The following tests reported unexpected behavior:")
       logfile.puts("#{file} \n")
      end
      }
end