calabash-cucumber : Как принудительно выполнить шаг калебаса, если сценарий занимает много времени или может быть повешен

Тест Calabash зависает между сценариями, когда тест выполняется в течение длительного времени, я ожидал, что сценарий истечет по тайм-ауту, если какое-либо условие не будет выполнено. однако этого также не происходит, поэтому тест переходит к следующему сценарию.

Есть ли способ, которым я могу реализовать в своем коде, чтобы продолжать отслеживать время выполнения каждого сценария, чтобы он заставлял сценарий терпеть неудачу, если он занимает больше времени, чем ожидалось, и после этого следующий сценарий работает нормально?

Любая помощь высоко ценится!

-сетка


person Mesh    schedule 28.02.2015    source источник


Ответы (2)


Вы можете использовать круглый хук, время ожидания которого истекает через 10 секунд:

Around do |scenario, block|
  Timeout.timeout(10) do
    block.call
  end
end
person jmccure    schedule 28.02.2015
comment
Вы пробовали это?, потому что этот хук вокруг не дал мне одинакового результата для всех сценариев. Некоторое время он делает тайм-аут, а иногда нет. - person Mesh; 01.03.2015
comment
Хм, может быть, тесты имеют фоновые шаги? makandracards.com/makandra/ - person jmccure; 01.03.2015
comment
У меня были противоречивые результаты с крючками Around и калебасами. Я проследил проблему до самого огурца. Изучив соответствующие вопросы, я пришел к выводу, что хуки будут переработаны в огурце 2.0. Мы оцениваем совместимость калебаса + огурца 2.0. Пожалуйста, не спрашивайте, когда мы добавим поддержку огурца 2.0. Это будет зависеть от того, когда выйдет огурец 2.0; нечто, над чем мы не властны. - person jmoody; 02.03.2015

Вы можете использовать этот синтаксис, чтобы принудительно выполнить шаг

Синтаксис

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
person Aravin    schedule 27.01.2016