Запустите сценарий огурца снова, пока не пройдете

У меня есть 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 ОТП (с Фабричной девочкой). Это исключит случайные сбои и сделает ваши тесты независимыми друг от друга, что сделает ваш набор тестов более чистым и обслуживаемым.

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

Другие вопросы по тегам