Учебники

Огурец — Особенности

Функция может быть определена как отдельная единица или функциональность проекта. Давайте рассмотрим очень распространенный пример сайта социальной сети. Как выглядит особенность этого продукта / проекта? Несколько основных функций могут быть определены как —

  • Создайте и удалите пользователя из социальной сети.

  • Функциональность входа пользователя на сайт социальной сети.

  • Обмен фотографиями или видео на сайте социальной сети.

  • Отправка запроса на добавление в друзья.

  • Выйти.

Создайте и удалите пользователя из социальной сети.

Функциональность входа пользователя на сайт социальной сети.

Обмен фотографиями или видео на сайте социальной сети.

Отправка запроса на добавление в друзья.

Выйти.

К настоящему времени ясно, что каждая независимая функциональность тестируемого продукта может быть названа как особенность, когда мы говорим о Cucumber. Позднее, когда вы начнете тестирование, рекомендуется, чтобы перед созданием тестовых сценариев мы определили функции, подлежащие тестированию.

Функция обычно содержит список сценариев, которые должны быть протестированы для этой функции. Файл, в котором мы храним функции, описание функций и сценариев, которые необходимо протестировать, называется Feature File . Мы увидим больше о функциональных файлах в следующей главе.

Ключевое слово для представления тестируемой функции в Gherkins — «Feature». Рекомендуется написать небольшое описание функции под названием функции в файле функций. Это также удовлетворит потребность в хорошей документации.

пример

Особенность — Функциональность входа для сайта социальной сети.

Пользователь должен иметь возможность войти на сайт социальной сети, если имя пользователя и пароль верны.

Пользователю должно отображаться сообщение об ошибке, если имя пользователя и пароль неверны.

Пользователь должен перейти на домашнюю страницу, если имя пользователя и пароль верны.

Файлы функций

Файл, в котором написаны тесты Cucumber, известен как файлы компонентов. Желательно, чтобы для каждой тестируемой функции был отдельный файл. Расширение файла функции должно быть «.feature».

Можно создать столько файлов объектов, сколько необходимо. Чтобы иметь организованную структуру, у каждого объекта должен быть один файл объектов.

Например —

Sr.No Особенность Имя файла функции
1 Логин пользователя userLogin.feature
2 Поделиться постом sharePost.feature
3 Создать учетную запись createAccount.feature
4 Удалить аккаунт deleteAccount.feature

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

Простой файл функций состоит из следующих ключевых слов / частей —

  • Feature — Название тестируемой функции.

  • Описание (необязательно). Опишите тестируемую функцию.

  • Сценарий — что такое тестовый сценарий.

  • Дано — Предварительное условие перед выполнением шагов теста.

  • Когда — конкретное условие, которое должно соответствовать, чтобы выполнить следующий шаг.

  • Затем — Что должно произойти, если условие, указанное в КОГДА, удовлетворяется.

Feature — Название тестируемой функции.

Описание (необязательно). Опишите тестируемую функцию.

Сценарий — что такое тестовый сценарий.

Дано — Предварительное условие перед выполнением шагов теста.

Когда — конкретное условие, которое должно соответствовать, чтобы выполнить следующий шаг.

Затем — Что должно произойти, если условие, указанное в КОГДА, удовлетворяется.

пример

ОсобенностьВход пользователя в социальную сеть.

Пользователь должен иметь возможность войти на сайт социальной сети, когда имя пользователя и пароль верны.

Пользователю должно отображаться сообщение об ошибке, если имя пользователя и пароль неверны.

Пользователь должен перейти на домашнюю страницу, если имя пользователя и пароль верны.

Схема — Функциональность входа для сайта социальной сети.

Данный пользователь переходит на Facebook. Когда я ввожу имя пользователя как «<имя пользователя>» и пароль как «<пароль>». Тогда логин должен быть неудачным.

| username  | password  |
| username1 | password1 |

* Ключевое слово AND используется для отображения связи между двумя условиями. И может использоваться с любыми другими ключевыми словами, такими как GIVEN, WHEN и THEN .

Нет логических подробностей, записанных в файле возможностей.

Определения шагов

У нас есть готовый файл функций с определенными тестовыми сценариями. Тем не менее, это еще не все сделано. Огурец на самом деле не знает, какой фрагмент кода должен быть выполнен для какого-либо конкретного сценария, описанного в файле возможностей.

Это вызывает необходимость в промежуточном файле определения шага. Файл определения шагов хранит отображение между каждым шагом сценария, определенным в файле объектов, с кодом выполняемой функции.

Итак, теперь, когда 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 для автоматизации наших этапов тестирования.