Запустите сценарий огурца снова, пока не пройдете
У меня есть 10 тестов, которые нужно запустить в огурце, и я использую ruby для написания своих кодов. Разработка тестируемого приложения вынуждает меня проводить тесты, которые зависят друг от друга.
Таким образом, пока предыдущий случай не будет пройден, следующий не получится. я добавил cucumber_wants_to_quit
в случае сбоя второго сценария следует избегать ожидания только получения отчетов об ошибках. Теперь я искал что-то вроде запуска второго сценария и продолжал его до pass
прежде чем перейти к третьему сценарию.
Я знаю о команде cucumber re-run
но он не захочет его использовать, поскольку он в основном запускает все сценарии и запускает неудачные случаи после завершения первого полного запуска.
Мое требование в основном, когда второй сценарий не выполняется, прежде чем перейти к третьему, запустить второй сценарий до конца. В языке кодирования что-то вроде
After do |scenario.name|
if scenario.name == failed?
status = scenario.name.run_again until scenario.name == passed
if !status
Cucumber.wants_to_quit = true
end
end
end
Любая помощь в этом?
1 ответ
Я думаю, что вы взбираетесь по скользкому склону, проходя испытания, которые зависят друг от друга. Вероятно, у вас будут постоянные проблемы с этим подходом в будущем.
Я бы порекомендовал написать ваши тесты, чтобы они не зависели друг от друга, и использовать фреймворк, такой как Factory Girl, для заглушения тестовых объектов и т. Д. Здесь есть большая гибкость и хорошая интеграция с огурцом.
ОБНОВЛЕНИЕ: согласно вашему комментарию, тестирование OTP должно быть интеграционным тестом, который проводится за пределами вашего TEST
среда. При развертывании нового кода на DEV
Например, в вашей среде ваш интеграционный тест (который тестирует OTP) должен выполняться на развернутом коде.
В вашем TEST
среда, вы можете fake
ОТП (с Фабричной девочкой). Это исключит случайные сбои и сделает ваши тесты независимыми друг от друга, что сделает ваш набор тестов более чистым и обслуживаемым.
В краткосрочной перспективе, возможно, вы сможете создать глобальную переменную состояния, которая будет содержать статус запуска теста. Недостатком является то, что вам придется проверять это в каждом тесте.