如何在运行selenium ruby​​ webdriver脚本时从命令提示符ruby窗口输出文件时导出结果

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

要做到这一点,我必须创建一个名为“rakefile.rb”的文件,其中包含以下内容,并在我的终端中调用“rake”:(我在之前的post中根据一个人的指南了解这些知识)。

task :default do FileList['file*.rb'].each { |file| ruby file } end 

但是,如果执行时有一个脚本失败,则将终止运行。

请帮忙指导我如何修改“rakefile.rb”,这样如果有一个脚本失败,系统会忽略它并继续在我的测试套件中运行下一个脚本?

另外,您可以建议我在将脚本运行到一个输出文件时编写所有结果吗?或者将每个脚本的结果放在每个输出文件中,输出文件将显示脚本列表失败。 任何帮助表示赞赏。 非常感谢。

我在单元框架内运行所有测试。 我自己使用测试单元,但你也可以使用rspec。 这也使您能够向代码添加断言,然后由单元框架报告。 如果一个测试失败或错误,您可以继续进行下一个测试。

我的rakefile的简化版本看起来像这样

 require 'rake/testtask' #this will run all tests in directory with no dependencies Rake::TestTask.new do |t| t.libs << "test" t.test_files = FileList['FAL*.rb'] t.verbose = true end #or you could run individual files like this task :FAL001 do ruby "FAL001.rb" end 

每个测试用例都是这样的

 require "test-unit" gem "test-unit" require "selenium-webdriver" class FAL001 < Test::Unit::TestCase def testFAL001 #methods that begin with test are automatically run #selenium code goes here assert_true(1 == 1) end def test002 #another test goes here end end 

您可以使用beginrescue来捕获测试脚本中的任何失败。

就像是

 begin raise "Ruby test script failed" rescue puts "Error handled" end 

在你的情况下会是这样的

 task :default do FileList['file*.rb'].each { |file| begin ruby file rescue puts "Test script failed because of #{$!}" end } end 

并写入一个类似的文件

 task :default do $stdout = File.new('console.out', 'w') $stdout.sync = true FileList['*.rb'].each { |file| begin ruby file rescue puts "test script failed because of #{$!}" end } end 

这样做是覆盖$ stdout来重定向控制台输出。