Всем привет! Существует система, для которой нужно написать сквозной тест заполнения форм. В ходе заполнения анкеты клиента последующий вид системы будет выбираться таким образом:
ЕСЛИ “Степень готовности залога” РАВНО “Готовое” И “Объект залога” РАВНО “Квартира”, ТО выбрать форму для Готовой квартиры
ЕСЛИ “Степень готовности залога” РАВНО “Строящееся” И “Объект залога” РАВНО “Квартира”, ТО выбрать форму для Строящейся квартиры.
То есть, существует несколько условий, в зависимости от которых будут изменяться вопросы. Нужно составить сценарий в Specflow, который будет каким-то образом это учитывать.
Я написала сценарий:
Scenario: Calculation Information
Given Переход на страницу
Then Загрузился выбор роли
When Выбор роли Сотрудник
Then Загрузился экран кабинета
When Выбор клиента Фамилия <LastName> Имя <Name> Отчество <MiddleName>
| N | LastName | Name | MiddleName |
| 0 | Булочкина | Кристина | Сергеевна |
| 0 | Уотсон | Эмма | Сергеевна |
When Нажать на кнопку Кредитное дело
When Нажать на кнопку Выбор продукта
When Выбрать Объект кредитования <clientGetObject>, Степень готовности <ClientGetObject>, Характер залога <refClientGiveObject>
#Фоормирует АПЗ значение параметров Степень готовности залога м Объект залога
When Выбрать Степень готовности залога <refClientGiveObject>, Объект залога <clientGiveObject>, Продукт <nucleus>
| N | refClientGiveObject | clientGiveObject | nucleus | Форма | Договор основание |
| 1 | Готовое | Квартира | Строящееся жилье фиксированный% квартира | Готовой квартиры | |
| 2 | Строящееся | Квартира | Строящееся жилье фиксированный% квартира | Строящейся квартиры | Уступка от Физ. лица |
Я думаю, что дальше должна быть какая-то проверка по условиям и переход к сценарию заполнения формы уже отталкиваясь от полученной формы. как это было бы оптимально реализовать?
Вы можете использовать Scenario Outline и Example - но ваш тест желательно разбить на более короткие фрагменты.
Что вы хотите протестировать?
Если только заполнение формы - нужно постараться сразу оказаться на нужной странице с нужными правами, для этого обычно используется Deep Link
на выходе мне нужно будет заполнять заявку с разными условиями, а затем проводить над этими заявками какие-то операции. я понимаю, что нужно разбить на какие-то куски. но я не знаю, как будет лучше вызывать их потом в зависимости от данных в тесте
Scenario Outline
The Scenario Outline keyword can be used to run the same Scenario multiple times, with different combinations of values.
Copying and pasting scenarios to use different values quickly becomes tedious and repetitive:
Scenario: eat 5 out of 12
Given there are 12 cucumbers
When I eat 5 cucumbers
Then I should have 7 cucumbers
Scenario: eat 5 out of 20
Given there are 20 cucumbers
When I eat 5 cucumbers
Then I should have 15 cucumbers
We can collapse these two similar scenarios into a Scenario Outline.
Scenario outlines allow us to more concisely express these scenarios through the use of a template with < >-delimited parameters:
Scenario Outline: eating
Given there are <start> cucumbers
When I eat <eat> cucumbers
Then I should have <left> cucumbers
Examples:
| start | eat | left |
| 12 | 5 | 7 |
| 20 | 5 | 15 |
A Scenario Outline must contain an Examples section. Its steps are interpreted as a template which is never directly run. Instead, the Scenario Outline is run once for each row in the Examples section beneath it (not counting the first header row).
The steps can use <> delimited parameters that reference headers in the examples table. Cucumber will replace these parameters with values from the table before it tries to match the step against a step definition.
Мой небольшой совет, возможно в вашем случае он не применим, так как мне неизвестно ваше приложение, но все же.
Этот кусок я бы заменил на один крупный шаг:
Given Переход на страницу
Then Загрузился выбор роли
When Выбор роли Сотрудник
Then Загрузился экран кабинета
Например на (можно перенести в Background секцию):
Given Открыт экран кабинета под ролью Сотрудник
Даже лучше так:
Given Открыт экран "Кабинет" под ролью "Сотрудник"
Где “кабинет” и “сотрудник” будут входящими параметрами. Шаг станет универсальнее и короче.
Дальше, касательно самого вопроса: как и рекомендуют выше - лучше разделить сценарии, потому что на Gherkin не реализуется логика вида “if else”. Сценарии на Gherkin должны быть всегда прямолинейны. Outline в вашем случае не подойдет.