Перейти к содержимому

Chrome DevTools: Инструменты тестировщика
онлайн, начало 4 июня
Docker: инструменты тестировщика
онлайн, начало 4 июня
Программирование на Python для тестировщиков
онлайн, начало 5 июня
SQL: Инструменты тестировщика
онлайн, начало 4 июня
Фотография

Хочу многократно использовать сценарий в Cucumber, по аналогии с проце

Cucumber

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 SkyN

SkyN

    Новый участник

  • Members
  • Pip
  • 2 сообщений

Отправлено 10 августа 2016 - 18:56

Как в Cucumber выполнять сценарий из шага другого сценария?

Т.е. хочется иметь такое:

 

  Сценарий: Создал заказ
    Допустим пользователь зашёл в приложение
    Если нажал 1,2,3
    То ...
 
  Сценарий: Создал жалобу 
    Допустим пользователь зашёл в приложение
    Если нажал 4,5,6
    То ...
 
  Сценарий: Создал жалобу используя данные заказа
    Допустим пользователь зашёл в приложение
    Если выполнил сценарий "Создал заказ"
    и выполнил сценарий "Создал жалобу"
    и сделал ещё какое нибудь действие
    то ...
  
 

Просто у меня получается очень много сценариев (причём в разных feature файлах), в которых надо создавать одинаковые сущности, и копировать код не хочется, его же потом ещё и поддерживать придется.

 

Про background знаю, но как использовать его здесь не придумал. Хотелось бы чтобы можно было вызывать сценарий, вне зависимости от его расположения в файлах.

 

До чего дошёл, но не заработало, почему то не находятся вообще никакие сценарии (features всегда пустой):

 

@Then("^выполнить сценарий$")
public void runScenario() throws Throwable {
List<CucumberFeature> features = CucumberFeature.load(
                new ClasspathResourceLoader(this.getClass().getClassLoader()),
                asList("feature"),
                Collections.emptyList(),
                System.out
        );
 
        ExecutionUnitRunner runner = new ExecutionUnitRunner(
                null,
                (CucumberScenario) features.get(0).getFeatureElements().get(0),
                new JUnitReporter(null, null, false)
        );
        runner.getRunnerSteps();
}
 
Как решали Вы данную проблему? Или может посоветуете что-нибудь...

  • 0

#2 Little_CJIOH

Little_CJIOH

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 469 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 10 августа 2016 - 20:57

Точно можно из одного шага вызывать другой, если вам нужны шаги-сценарии - пишите шаги-сценарии
  • 1

#3 elvis

elvis

    Постоянный участник

  • Members
  • PipPipPip
  • 189 сообщений
  • Город:Tallinn


Отправлено 11 августа 2016 - 07:01

Немного не в тему, но такой функционал есть в gauge https://github.com/getgauge .  Там кроме сценариев и спецификаций (аналог feature) есть ещё понятие concept, который составляется из существующих шагов, хранится в отдельном файле и может быть указан как шаг в любом сценарии. Если есть желание попробовать что-то новое, то gauge неплохая альтернатива cucumber. http://getgauge.io/d...s/concepts.html


  • 0

#4 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 11 августа 2016 - 09:49


Как решали Вы данную проблему? Или может посоветуете что-нибудь...

 

Полностью соглавен с @Little_CJIOH.

В коде пишется шаг, внутри которого - последовательность других шагов.

Если хочется определять всё именно в сценариях, используйте RobotFramework. Там есть и переиспользование, и условия, и много чего. Вот только у него формат описания гораздо сложнее, и с отладкой будут проблемы. Если есть возможность писать простые тесты на Cucumber - пишите. Обычно можно разбить сценарий таким образом, чтоб получилось несколько простых линейных тестов, и не создавать лишних зависимостей.


  • 0

#5 SkyN

SkyN

    Новый участник

  • Members
  • Pip
  • 2 сообщений

Отправлено 11 августа 2016 - 17:05

спасибо, присмотрюсь к gauge, на первый взгляд он мне понравился.


  • 0

#6 aleksey_p

aleksey_p

    Активный участник

  • Members
  • PipPip
  • 107 сообщений
  • ФИО:Алексей

Отправлено 17 октября 2018 - 12:07

Здраствуйте вы решили проблему? Я нашел такую статью, но есть сомнения использовании п 1-2 на практике. Так же интересует возможность запуска сценария(шагов) перед другим сценарием. Н-р авторизация на странице


  • 0

#7 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 758 сообщений
  • ФИО:Роман

Отправлено 17 октября 2018 - 12:17

Кукумбер используется только для небольшого количества простейших приёмочных тестов, это и авторы говорят в своей книге

 

если нужно писать много обычных регрессионных тестов - надо писать на языке программирования

 

да, конечно, Кукумбер может вызывать "шаги из шагов" - но за это вы поплатитесь когда надо будет поддерживать эти тесты, когда ваш тест сьют будет напоминать игру где из кучи дощечек игроки по очереди вытаскивают по одной, пока постройка не рухнет


  • 0

#8 aleksey_p

aleksey_p

    Активный участник

  • Members
  • PipPip
  • 107 сообщений
  • ФИО:Алексей

Отправлено 17 октября 2018 - 12:27

Согласен, при более сложной логике поддерживать эти тесты будет крайне сложно. Сейчас задача написать 10-15 приемочных тестов, без какой-либо сложной логики. Поэтому не хотелось копирования шагов, но похоже из коробки тут нет способа.


  • 0

#9 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 758 сообщений
  • ФИО:Роман

Отправлено 17 октября 2018 - 12:32

https://stackoverflo...p-best-practise

 

пишите хелпер метод лучше


  • 0


Программирование на С# для тестировщиков
онлайн
Автоматизатор мобильных приложений
онлайн
Selenium WebDriver: полное руководство
онлайн
Программирование на Python для тестировщиков
онлайн




Темы с аналогичным тегами Cucumber

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале