Повторное использование ключевых слов в файле функций, которые обеспечат возможность повторного использования кода.
Настоятельно НЕ рекомендуется вызывать пошаговые определения в пределах пошаговых определений.
Я бы написал свой файл функций таким образом,
Scenario Outline: To check login functionality
Given I login with "<username>" and "<password>"
Then I "<may or may not>" login successfully
Examples:
|username|password|may or may not|
|paul |123$ |may |
|dave |1111 |may not |
В моем определении шага, (это Java)
@Given(I login with \"([^\"]*)\" and \"([^\"]*)\"$)
public void I_login_with_and(String username, String password){
//login with username and password
}
@Then(I \"([^\"]*)\" login successfully$)
public void I_login_successully_if(String validity){
if(validity.equals("may")){
//assert for valid login
}
else
if(validity.equals("may not")){
//assert for invalid login
}
}
Таким образом, много повторного использования кода.
То же самое, что задано и затем обрабатывает как действительные, так и недействительные сценарии.
В то же время, ваш файл функций имеет смысл для читателей.