0

だから私はいつもperlを使ってスクリプトを書いたが、Rubyを使って試みたので、この質問は本当にばかげているように聞こえるかもしれないが、うまくいかない。

私はrubyTest::UnitでSeleniumWebdriverスクリプトを書いています。以下はいくつかのサンプルコードです。

 def test_runit
    @driver.get(@base_url + "/")
    @driver.find_element(:id, "gbqfq").clear
    @driver.find_element(:id, "gbqfq").send_keys "selenium"
    @driver.find_element(:id, "gbqfb").click
    @driver.find_element(:link, "Selenium - Web Browser Automation").click
    assert(@driver.find_element(:tag_name => "body").text.include?("administration tasks"),"the assert works")
    @driver.find_element(:link, "Support").click
  end

出力付き

 ruby runit.rb 
Loaded suite runit
Started
.
Finished in 9.732149 seconds.

1 tests, 2 assertions, 0 failures, 0 errors

テスト中に、ページにテキストが存在するかどうかを確認する必要があります。使用assertは問題なく機能します。しかし、失敗した場合、テストはあちこちで終了し、それ以上続行されません。

perlでは verify、基本的に何かが失敗したとマークして先に進むようなものがあります。

このような結果が得られることを望んでいます

ruby runit.rb 
Loaded suite runit
Started
.
Finished in 9.732149 seconds.

1 tests, 1 assertion, 1 failure, 0 errors

しかし、検証はルビーテストユニットでは機能しないか、間違っている可能性があります。

誰かが私にいくつかのサンプルコードを教えてもらえますか?ありがとう

4

3 に答える 3

0

Rubyにperlと同様の「verify」機能があるとは聞いたことがありません。「assert」はfalseの場合、プログラムがすぐに停止することを意味するからです。

コードをとして再実装し、「ゼロガード」にすることをお勧めします。

body_element = @driver.find_element(:tag_name => "body")
if body_element
  assert(body_element.text.include?("administration tasks"),"the assert works")
end 
于 2012-04-06T22:45:34.757 に答える
0

とった!!レスキューを使用する必要があります。返信ありがとうございます。

begin
    assert(@driver.find_element(:tag_name => "body").text.include?("text to check"),"the assert works")
rescue Test::Unit::AssertionFailedError
    @verification_errors << $!
end
于 2012-04-09T14:47:46.400 に答える
0

はい、確かに。コマンドを救出する必要があります。

ただし、テストヘルパーでこれに似た検証メソッドを簡単に作成できます

 def verify
   $verification_errors = [] if $verification_errors.nil?
   assert yield
 rescue Test::Unit::AssertionFailedError => afe
   $verification_errors << afe
   puts "ERROR: #{afe.message}"
 end

そして、あなたはそれをこのようなものと呼ぶことができます:

 verify{ @driver.find_element(:tag_name => "body").text.include?("foobar") }

テストの最後、分解中に、検証エラーがあるかどうかを確認する必要があります。

 assert $verification_errors.empty? or $verification_errors.nil?
于 2013-04-14T04:49:32.877 に答える