Я пытаюсь очистить наш функциональный пакет на работе, и мне было интересно, есть ли способ, чтобы огурец повторил сценарий и посмотрел, если проходит, прежде чем перейти к следующему сценарию в этой функции? Phantom - это мой безголовый браузер для веб-браузера poltergeist - мой водитель.Есть ли способ сделать огурец попробовать сценарий еще раз, прежде чем переходить к следующему сценарию
В основном наша сборка продолжает сбой, потому что коробка становится перегруженной всем тестом, и во время сценария на странице не будет достаточно времени, чтобы отобразить все, что мы пытаемся проверить. Следовательно, это приводит к ложному срабатыванию. Я не знаю, как ожидать, какой тест повесит сборку.
Было бы неплохо иметь крючок (одну идею), которая возникает после каждого сценария. Если сценарий проходит, тогда распечатывайте результаты для этого сценария и продолжайте движение. Однако, если сценарий не работает, попробуйте запустить его снова, чтобы убедиться, что у него нет головокружения. Затем и только тогда вы распечатываете результаты для этого сценария и переходите к следующему тесту.
Есть ли у кого-нибудь идеи о том, как реализовать это?
Я думаю, что-то вроде
After do |scenario|
if scenario.failed?
result = scenario.run_again # I just made this function up I know for a fact this doesn't actually exist (see http://cukes.info/api/cucumber/ruby/yardoc/Cucumber/Ast/Scenario.html)
if !result
Cucumber.wants_to_quit = true
end
end
end
Первоначальное решение я увидел это: How to rerun the failed scenarios using Cucumber?
Это было бы хорошо, но мне нужно было, чтобы убедиться, что
cucumber @rerun.txt
действительно исправил отчеты, если тест прошел. Как
cucumber @rerun.txt --format junit --out foo.xml
Где foo.xml является отчет JUnit, который изначально сказал, что функция 1, 2 & 5 проходили в то время как 3 и 4 потерпели неудачу, но теперь будет говорить 1, 2, 3, 4 & 5, проходящей хотя rerun.txt только сказал, чтобы повторить 3 и 4.
звучит так, будто у вас есть проблема с грузоподъемностью здесь, чтобы быть правдивой. Если ваш тест env перегружен несколькими испытаниями огурца, то какой шанс имеет реальная окружающая среда, если несколько пользователей попадут в нее одновременно. Возможно, основное внимание должно быть сосредоточено на более надежном тестовом сервере, который больше похож на производство, или на решение проблемы производительности сайта в соответствии с тем, что, вероятно, является довольно скромной нагрузкой (это после всего функционального тестирования, а не для загрузки, сколько проверок работают в одно и то же время?) –
@mpdunson Вам удалось найти способ сделать это? Я в основном знаю команду 'rew run', но это не работает для меня. Те тесты, которые у меня есть, зависят друг от друга из-за способа разработки приложения. Таким образом, все мои тесты терпят неудачу, если по какой-то причине второй тест не удается.Я искал способ, похожий на ваш, что если я могу запустить этот конкретный сценарий, пока он не пройдет, прежде чем перейти к следующему? вместо использования циклов 'until' или' except' в шагах. Есть идеи на это? –