2014-10-02 42 views
0

下創建的方法執行是我的程序:停止由define_method

class Raja < Watir::TestCase 
    testName.each_index do |i| # test case has sequence of test cases. 
    define_method(testName[i]) do 
    end 
    end 
end 

有十個測試案例。第一個循環運行十次,因此define_method將創建十個方法,如def test_1,def test_2,...,def test_10。如果在test_3處發生某些錯誤,我需要停止其他方法進一步執行。不應該執行從test_4test_10。我怎麼能阻止這種執行?

+0

請注意,您可以執行'testName.each do | name | define_method(name)',而不是'each_index' /'testName [i]'。 – meagar 2014-10-02 04:32:09

+1

鑑於測試是依賴的,爲什麼不做一個單一的測試? – 2014-10-02 04:32:13

+0

@meagar謝謝,我會嘗試。 – RAJ 2014-10-02 13:40:33

回答

0

您可以創建一個實例變量,它將負責知道是否執行該方法。

class Raja < Watir::TestCase 
    attr_accessor :execute 
    alias_method :execute?, :execute 

    testName.each_index do |i| # test case has sequence of test cases. 
    define_method(testName[i]) do 
     return unless execute? 

     # Your code here. 
    rescue 
     self.execute = false 
    end 
    end 
end 
+0

不,不是的,在我們進入測試用例之後,您將避免執行,這意味着在進入def test_1之後,但我需要完全避免,這意味着必須避免進一步的調用。如果在def test_3時失敗,則應避免def test_4。你可能會問我爲什麼這樣做,因爲如果有1000個測試用例,那麼即使它失敗了,它仍然需要執行剩餘的998個測試用例。 – RAJ 2014-10-02 13:39:49