当测试运行很长时间时,Calabash 测试在场景之间挂起,如果任何条件不满足,我预计场景会超时。但是,这也没有发生,因此测试继续进行到下一个场景。
有没有一种方法可以在我的代码中实现以继续监视每个场景的运行时间,以便如果它需要比预期更长的时间,它会强制场景失败,然后下一个场景正常运行?
任何帮助都非常感谢!
-网
当测试运行很长时间时,Calabash 测试在场景之间挂起,如果任何条件不满足,我预计场景会超时。但是,这也没有发生,因此测试继续进行到下一个场景。
有没有一种方法可以在我的代码中实现以继续监视每个场景的运行时间,以便如果它需要比预期更长的时间,它会强制场景失败,然后下一个场景正常运行?
任何帮助都非常感谢!
-网
你可以使用一个环绕钩子,这个钩子会在 10 秒后超时:
Around do |scenario, block|
Timeout.timeout(10) do
block.call
end
end
您可以使用此语法强制步骤失败
fail(msg = 'Error. Check log for details.', options = {:prefix => nil, :name => nil, :label => nil})
例子
fail(msg ="Failed due to timeout")
Given (/^I do this$/)do
do some...
sleep 10
fail(msg="failure message")
end