#loops #behat
#циклы #behat
Вопрос:
Я тестирую права пользователя API-интерфейсов одного веб-приложения с помощью Behat. Мне нужно быть уверенным, что несколько ролей не могут получить доступ к некоторым API. Поэтому мне нужно проверить, что эти роли получают запрещенный ответ от API. Это работает хорошо, но поскольку существует 8 разных ролей, мой файл функций становится огромным, потому что я повторяю все шаги для каждой роли..
Моя текущая функция записывается следующим образом:
Feature: Accounting
@accounting
Scenario: I want to see the accounting
Given I have the role of "sales"
When I want to get the accounting
Then I should get a forbidden response
When I want to get the balance sheet
Then I should get a forbidden response
When I want to get the income statement
Then I should get a forbidden response
Given I have the role of "project"
When I want to get the accounting
Then I should get a forbidden response
When I want to get the balance sheet
Then I should get a forbidden response
When I want to get the income statement
Then I should get a forbidden response
Given I have the role of "support"
When I want to get the accounting
Then I should get a forbidden response
When I want to get the balance sheet
Then I should get a forbidden response
When I want to get the income statement
Then I should get a forbidden response
...
Меняется только имя роли, все остальное остается прежним. Я хотел бы знать, есть ли способ повторно выполнить один сценарий несколько раз, но с разными входными данными? Или, может быть, есть лучший способ справиться с такими ситуациями?
Ответ №1:
Вот для чего предназначены схемы сценариев:
Scenario Outline: I want to see the accounting
Given I have the role of "<role>"
When I want to get the accounting
Then I should get a forbidden response
When I want to get the balance sheet
Then I should get a forbidden response
When I want to get the income statement
Then I should get a forbidden response
Examples:
| role |
| sales |
| project |
| support |