Огурец - Особенности
А Featureможно определить как отдельную единицу или функциональность проекта. Возьмем очень распространенный пример сайта социальной сети. Как выглядит особенность этого продукта / проекта? Несколько основных функций можно определить как -
Создать и удалить пользователя из социальной сети.
Функциональность входа пользователя в социальную сеть.
Обмен фотографиями или видео в социальной сети.
Отправка запроса в друзья.
Logout.
К настоящему времени ясно, что каждая независимая функция тестируемого продукта может быть названа функцией, когда мы говорим о Cucumber. Позже, когда вы начнете тестирование, рекомендуется, чтобы перед созданием тестовых скриптов мы должны определить функции, которые нужно протестировать.
Функция обычно содержит список сценариев, которые необходимо протестировать для этой функции. Файл, в котором мы храним функции, описание функций и сценариев для тестирования, называетсяFeature File. Мы увидим больше о файлах функций в следующей главе.
Ключевое слово для представления тестируемой функции в Gherkins - «Feature». Рекомендуется написать небольшое описание функции под названием функции в файле функции. Это также удовлетворит потребность в хорошей документации.
пример
Feature - Функциональность входа в социальную сеть.
Пользователь должен иметь возможность войти в социальную сеть, если имя пользователя и пароль верны.
Если имя пользователя и пароль неверны, пользователю должно быть показано сообщение об ошибке.
Пользователь должен перейти на домашнюю страницу, если имя пользователя и пароль верны.
Файлы функций
Файл, в котором написаны тесты Cucumber, известен как feature files. Желательно, чтобы для каждой тестируемой функции был отдельный файл функций. Расширение файла функций должно быть «.feature».
Можно создать столько файлов функций, сколько необходимо. Чтобы иметь организованную структуру, каждая функция должна иметь один файл функции.
Например -
Старший Нет | Характерная черта | Имя файла функции |
---|---|---|
1 | Логин пользователя | userLogin.feature |
2 | Поделиться публикацией | sharePost.feature |
3 | Регистрация | createAccount.feature |
4 | Удалить аккаунт | deleteAccount.feature |
Соглашение об именах, которое будет использоваться для имени функции, имя файла функции зависит от выбора человека. В Cucumber нет основного правила в отношении имен.
Простой файл функций состоит из следующих ключевых слов / частей -
Feature - Название тестируемой функции.
Description (необязательно) - Опишите тестируемую функцию.
Scenario - Каков тестовый сценарий.
Given - Предварительное условие перед выполнением шагов теста.
When - Конкретное условие, которому должно соответствовать, чтобы выполнить следующий шаг.
Then - Что должно произойти, если выполняется условие, указанное в КОГДА.
пример
Feature - Вход пользователя в социальную сеть.
Пользователь должен иметь возможность войти в социальную сеть, если имя пользователя и пароль верны.
Если имя пользователя и пароль неверны, пользователю должно быть показано сообщение об ошибке.
Пользователь должен перейти на домашнюю страницу, если имя пользователя и пароль верны.
Outline - Функциональность входа в социальную сеть.
Данный пользователь переходит на Facebook. Когда я ввожу имя пользователя как «<имя пользователя>» и пароль как «<пароль>». Тогда вход в систему должен быть неудачным.
| username | password |
| username1 | password1 |
* AND ключевое слово используется, чтобы показать связь между двумя условиями. AND можно использовать с любыми другими ключевыми словами, например GIVEN, WHEN и THEN.
В файле функций нет никаких логических деталей.
Определения шагов
У нас есть готовый файл функций с определенными тестовыми сценариями. Однако это еще не все. Cucumber на самом деле не знает, какой фрагмент кода должен быть выполнен для любого конкретного сценария, описанного в файле функций.
Это вызывает потребность в промежуточном файле определения шага. В файле определения шагов хранится сопоставление каждого шага сценария, определенного в файле функций, с кодом выполняемой функции.
Итак, теперь, когда Cucumber выполняет шаг сценария, упомянутого в файле функций, он сканирует файл определения шага и выясняет, какая функция должна быть вызвана.
Пример файла определения шага
public void goToFacebook() {
driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@When "^user logs in using Username as \"([^\"]*)\" and Password as \"([^\"]*)\"$"
public void I_enter_Username_as_and_Password_as(String arg1, String arg2) {
driver.findElement(By.id("email")).sendKeys(arg1);
driver.findElement(By.id("pass")).sendKeys(arg2);
driver.findElement(By.id("u_0_v")).click();
}
@Then"^login should be unsuccessful$"
public void validateRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test Pass");
} else {
System.out.println("Test Failed");
}
driver.close();
}
Таким образом, с каждой функцией, независимо от того, какой код вы хотите выполнить на каждом шаге теста (например, GIVEN / THEN / WHEN), вы можете записать его в файле определения шага. Убедитесь, что код / функция определены для каждого шага.
Эта функция может быть функциями Java, где мы можем использовать как команды Java, так и Selenium для автоматизации наших шагов тестирования.