Как создать плагин для шаблонов уровня объектов Specflow - PullRequest
0 голосов
/ 16 апреля 2020

Идея "Outline Outline" - это запрос как минимум на 10 лет https://groups.google.com/forum/#! Topic / specflow / 6bzgl9LYOFI

Со многими одинаковыми или похожими запросами здесь в stackoverflow :

Шаблоны уровня возможностей Specflow

Есть ли схема элементов?

Можно ли запустить функцию несколько раз в SpecFlow?

Specflow: ведение одной таблицы примеров для множества контуров сценария

Совместное использование общего набора примеров для нескольких контуров сценария в Specflow

SpecFlow эквивалентно параметризованному тестовому устройству

Использование шага фона, как Outline Step

Есть не кажется решением этой проблемы. Я хотел бы построить такой плагин. Как я могу создать плагин для шаблонов уровня возможностей Specflow? (Можете ли вы указать направление и / или примеры? Какой тип плагина https://github.com/SpecFlowOSS/SpecFlow/wiki/Plugins или это несколько плагинов?)

Требуется, чтобы SpecFlow выполнял один и тот же файл функций с разные данные / параметры. Данные могут быть определены как «Примеры возможностей», и эти примеры могут быть указаны встроенными или получены из внешнего файла или базы данных. Для каждой строки в примерах объектов выполните весь объект с параметрами из одной строки.

Перефразируя из первой ссылки выше: "... a" Outline Feature "будет запустить весь сценарий ios, используя последовательность общих параметров. Что-то вроде:

Feature Outline:

Background:
    Given I have opened the application using <browser>

# Scenario 1...
#  the scenario would reference the parameters of one/current feature examples row
# Scenario 2...

Feature Examples:
| browser      |
| firefox      |
| iexplore     |
| googlechrome |

Или из внешнего источника, аналогично тому, как его определяет плагин Excel:

@source:FeatureExamples.xlsx
Feature Examples:
| browser      |

Однако, мое предпочтение было бы выражено более кратко и следовало бы существующему языку корнишонов. Т.е. не вводите дополнительные ключевые слова, просто связав @source с ключевым словом "Feature":

@source:FeatureExamples.xlsx
Feature: Calculator

Scenario Outline: Add two numbers
    Given I have entered <a> into the calculator 
    And I have entered <b> into the calculator 
    When I press add
    Then the result should be <result> on the screen 
Examples:
    | case | a | b | result |

Строка заголовка примеров. «будет разрешено указывать только столбцы, необходимые для этого сценария (даже если в данных строки объекта будут столбцы, необходимые для всего сценария ios). Для поддержки« встроенных »примеров @source также может выглядеть следующим образом:

@source: {
    | case     | a  | b  | result |
    | example1 | 10 | 20 | 30     |
    | example2 | 40 | 50 | 90     |
 }

(или csv, или JSON, et c.;)

1 Ответ

0 голосов
/ 17 апреля 2020

Я недавно создал плагин, который должен помочь с вашим первым примером, где вы использовали браузеры.

Название плагина SpecFlow.Contrib.Variants, а документацию можно найти здесь .

Поэтому, если вы укажете

@Browser:Chrome
@Browser:Firefox
Feature: AnExampleFeature

, тогда каждый сценарий будет выполняться для каждого из этих браузеров или «вариантов», как я на них ссылаюсь в этом плагине. - Обратите внимание, что этот плагин не является secifi c только для браузеров, и варианты могут использоваться для различных нужд.

Однако это не решит проблему использования примеров с большим количеством параметров, для этого я Я бы согласился, что вам понадобится плагин специально для этого, как вы упомянули.

Я действительно думаю, что вы, вероятно, захотите плагин генератора, а не плагин времени выполнения. Это потому, что если вы загляните за капот, примеры сценариев используются как часть генерации кода за файлами (.cs).

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

Я не хочу предвосхищать, насколько простым было бы решение для этого, не углубляясь в него, но это звучит так, будто некоторые фундаментальные изменения в SpecFlow быть нужным. Например, есть несколько объектов, которые, вероятно, потребуется обновить, чтобы удовлетворить примеры функций - если вы посмотрите на некоторые файлы здесь , вы можете представить, что некоторые из них нужно будет добавить в такие, как SpecFlowFeature.cs, возможно, новый FeatureOutline.cs et c et c et c.

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