停止由define_method
问题描述:
下创建的方法执行是我的程序:停止由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_4
到test_10
。我怎么能阻止这种执行?
答
您可以创建一个实例变量,它将负责知道是否执行该方法。
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
请注意,您可以执行'testName.each do | name | define_method(name)',而不是'each_index' /'testName [i]'。 – meagar 2014-10-02 04:32:09
鉴于测试是依赖的,为什么不做一个单一的测试? – 2014-10-02 04:32:13
@meagar谢谢,我会尝试。 – RAJ 2014-10-02 13:40:33