2014-10-02 40 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