Specflow: Вызов Scenario как часть другого scenario

bdd
specflow
Теги: #<Tag:0x00007fedc4139610> #<Tag:0x00007fedc4139430>

(Ilya G) #1

Всем привет,

Есть Specflow сценарий который создает данные в базе, к примеру:

Scenario: Create simple company ind database
	Given creating some data in DB
	And adding some other data in DB
	And more data in DB

В реальности шагов порядка 19 и много таблиц, хочу вызвать этот сценарий как шаг в другом сценрии или как background:

Scenario: Test simple company
	Given call scenario "Create simple company in database"
	Then do some testing

Знаю что есть “Calling Steps from Step Definitions”


но это не подходит, так как много таблиц и шагов.

Подскажите пожалуйста, как решить задачу?


(qa_in_gene_qa_in_gene) #2

Вариант 1:


Background: 
        Given creating some data in DB
	And adding some other data in DB
	And more data in DB

Scenario: Test simple company
        Then do some testing

Вариант 2:

Все-таки использовать Calling Steps from Step Definitions


(Ilya G) #3

спасибо конечно, но все содержание вашего ответа было в моем вопросе:)
к сожалению эти варианты не подходят.
Давно работал на проекте, где было это реализовано(вызов сценария в другом сценарии), думал это базовая фича specflow, оказалось нет, теперь очень нужно это реализовать в моем проекте. Начал копать cs файлы(используем C#), которые генерирует Specflow, но пока не вижу решения.


(Ilya G) #4

Может кому пригодится, вызвать сценарий внутри степа можно так:

Идем в cs файл который генерит specflow, смотрим название класса, он будет похож на название фичи.
Внутри нужного шага создаем инстанс фичи, делаем тест инит, а потом вызываем сценарий.


        [When(@"Your step")]
        public void YourStep()
        {
            var yourFeatureName = new YourFeatureName ();
            yourFeatureName.TestInitialize();
            yourFeatureName.YourScenarioName();
        }

(Anna Storm) #5

Привет
Я столкнулась с похожей траблой. Можна плиз детальний пример


(Ilya G) #6

У каждого feature файла в specflow есть файл с тем же именем, но расширением .cs.
В этом файле смотрите название класса, это и будет ваш “YourFeatureName”.
Создаете этот класс у себя в шаге(YourStep), потом делаете yourFeatureName.TestInitialize();
А затем ourFeatureName.YourScenarioName(), где YourScenarioName имя вашего сценария без пробелов.

Потом вызываете этот степ где надо.


(Denis Repon) #7
        var beforeSettings = new BeforeScenarioSettingsFeature();
        beforeSettings.TestInitialize();
       beforeSettings.Before_Scenario();

ругается при TestInitialize() на Additional information: Object reference not set to an instance of an object.