1

現在、「Rubyでコマンドプロンプトを開始」ターミナルでrake gemを使用して、テストスイート(Selenium Ruby Webdriverで作成)ですべてのSeleniumスクリプトを一度に実行しています。

これを行うには、以下の内容の「rakefile.rb」という名前のファイルを作成し、ターミナルで「rake」を呼び出す必要があります(以前の投稿の人のガイドに基づいてこの知識を知っています)。

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

ただし、実行時に失敗したスクリプトが1つあると、実行は終了します。

誰かが「rakefile.rb」を変更する方法を教えてください。1つのスクリプトが失敗した場合、システムはそれを無視し、テストスイートで次のスクリプトを実行し続けますか?

また、スクリプトを実行したときにすべての結果を1つの出力ファイルに書き込む方法を教えてください。または、各スクリプトの結果が各出力ファイルに入れられ、出力ファイルに失敗したスクリプトのリストが表示されます。どんな助けでも大歓迎です。本当にありがとう。

4

2 に答える 2

1

beginおよびを使用してrescue、テストスクリプトの失敗をキャッチできます。

何かのようなもの

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をオーバーライドしてコンソール出力をリダイレクトすることです。

于 2012-12-14T15:46:20.003 に答える
0

すべてのテストをユニットフレームワーク内で実行します。私は自分でテストユニットを使用していますが、rspecを使用することもできます。これにより、コードにアサーションを追加して、ユニットフレームワークによってレポートされるようにすることもできます。1つのテストが失敗またはエラーになった場合は、次のテストに進むことができます。

私の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
于 2012-12-14T21:22:17.543 に答える