Создание примеров для ScenarioOutline в коде - PullRequest
1 голос
/ 05 апреля 2019

Я хочу динамически создать несколько примеров для ScenarioOutline в файле объектов. Можно ли как-то сделать это в хуке @before?

Я знаю, это не то, как вы должны использовать огурец, но как это возможно?

Я уже пытался получить доступ к Сценарию в хуке, но нет способов получить все шаги и их переменные / заполнители

Ответы [ 2 ]

1 голос
/ 06 апреля 2019

Огурец не рекомендует иметь примеры вне файла возможностей.

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

Другой альтернативный вариант - использование огурца с QAF , который предоставляет множество встроенных функций провайдеров данных , включая XML / CSV / JSON / EXCEL / DB. Он также поддерживает предоставление примера, сгенерированного с помощью кода с использованием специального поставщика данных. Например:

Scenario Outline: scenario with dynamic test-data
....

Examples:{"dataProvider":"dynamic-examples", "dataProviderClass":"my.project.impl.CustomExamplesProvider"}

package my.project.impl;
public class CustomExamplesProvider{

    @DataProvider(name="dynamic-examples")
    public static Object[][] dataProviderForBDD(){
        //generate and return data. 
        //This is just example with hard-coded values and you can generate and return data as per need.
        Map<Object, Object> ex1 = Maps.newHashMap();
        ex1.put("fruit", "grapes");
        ex1.put("color", "green");

        Map<Object, Object> ex2 = Maps.newHashMap();
        ex2.put("fruit", "banana");
        ex2.put("color", "yellow");

        return new Object[][] {{ex1},{ex2}} ;
    }
}
0 голосов
/ 05 апреля 2019

Этот вопрос задавался пару раз раньше, обычно в качестве более конкретного вопроса «Как я могу импортировать примеры набросков сценария из CSV?». Вы можете найти обходной путь, который работает для вас, исследуя этот вопрос, например этот ответ , который предлагает использовать QAF Gherkin фабрика сценариев , или этот ответ , который предлагает пройти CSV в сценарий, а затем использовать таблицу примеров для индексации в нем.

НО, тем не менее, динамическое определение сценариев из файла специально указано в FAQ по огурцам как антишаблон

Мы советуем вам не использовать файлы Excel или csv для определения ваших тестовых случаев; использование файлов Excel или csv считается антишаблоном.

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

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

Cucumber как инструмент BDD включает в себя много накладных расходов (написание файлов функций) и обеспечивает определенную ценность (вероятно, живое понимание всей команды того, как должен работать продукт). Если вы пишете файлы функций, которые не приносят вам такой ценности, вы все это время вкладываете в дорогой ненужный слой своей тестовой среды. По сути, Cucumber становится прославленным организатором тестов, и есть гораздо более дешевые способы выполнить тест, если вам действительно не нужно значение, которое BDD должен предоставить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...