2011-01-10 66 views
3

我在我的硒测试文件(使用Ruby和rspec)测试我的web应用程序的各个部分中有几个'it'块。如果任何条件或代码失败,每个'it'块将停止执行,并转到下一个'it'块。如果以前的硒测试失败,只能运行硒测试

  • 是否有一种方式来运行一个“它”块 只有在以前的失败或致电 功能对失败的测试反应?
  • 有没有更好的方法来完成我想要做的事情,而不涉及'it'块?

例“它”阻止

it "should load example.com" do 
    page.open("http://example.com") 
    page.wait_for_page_to_load(25) 
end 

回答

1

我不喜欢我目前的解决方案,并认为这是一个更好的方式来做到这一点,但现在......

  • 包原始测试代码在“开始”区块中的“it”块中
  • 放置代码以响应救援区段中的故障

it "should load example.com" do 
    begin 
    page.open("http://example.com") 
    page.wait_for_page_to_load(25) 
    "wow".should == "cool" 
    rescue Exception => e 
    // code that responds to failed test 
    end 
end 

为什么我不喜欢这个

  • 我觉得脏写测试代码这样的(感觉错了!)
  • RSpec的报告一通,除非救援码也失败
+1

这是一个实际测试,还是只是为以后的测试设置?理想情况下,您的测试可以按照任意顺序进行,并在一个自包含的设备中进行设置,测试和拆卸。至于测试通过,你应该用'raise this test failed'来结束救援部分。''。 – 2011-01-10 23:00:53