Огурец - Схема сценария

Scenario outlineв основном заменяет переменную / ключевые слова значением из таблицы. Каждая строка в таблице рассматривается как сценарий.

Продолжим тот же пример функции входа в Facebook. До сих пор мы выполняли один сценарий: после предоставления правильного имени пользователя вход в систему прошел успешно. Теперь предположим, что мы хотим проверить успешность входа в систему для всех трех возможных типов входных данных, а именно имени пользователя, адреса электронной почты или номера телефона. Для этого нам нужно будет написать три разных сценария, каждый из которых будет зависеть от типа ввода, вход в систему будет успешным. В этом случае сценарии будут выглядеть следующим образом.

Scenario:

Данный пользователь переходит на Facebook

Когда я ввожу правильный логин и пароль

Тогда логин должен быть успешным

Scenario:

Данный пользователь переходит на Facebook

Когда я ввожу правильный адрес электронной почты и пароль

Тогда логин должен быть успешным

Scenario:

Данный пользователь переходит на Facebook

Когда я ввожу правильный номер телефона и пароль

Тогда логин должен быть успешным

Здесь, если мы внимательно рассмотрим три вышеупомянутых сценария: операторы одинаковы, изменяется только входной параметр (имя пользователя / адрес электронной почты / номер телефона). Вот где проявляется важность наброска сценария.

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

пример

Давайте создадим пример схемы сценария -

Step 1 - Создайте тестовый проект Maven с именем ScenarioOutlineTest

  • Перейдите в File → New → Others → Maven → Maven Project → Next.

  • Укажите идентификатор группы (идентификатор группы однозначно идентифицирует ваш проект для всех проектов).

  • Укажите идентификатор артефакта (идентификатор артефакта - это имя банки без версии. Вы можете выбрать любое имя в нижнем регистре).

  • Щелкните Готово.

  • открыто pom.xml -

    • Перейдите в проводник пакетов в левой части Eclipse.

    • Разверните проект CucumberTest.

    • Найдите файл pom.xml.

    • Щелкните правой кнопкой мыши и выберите вариант «Открыть с помощью текстового редактора».

  • Добавить зависимость для Selenium - это укажет Maven, какие jar-файлы Selenium должны быть загружены из центрального репозитория в локальный репозиторий.

    • Откройте pom.xml в режиме редактирования, создайте тег зависимостей (<dependencies> </dependencies>) внутри тега проекта.

    • Внутри тега зависимостей создайте тег зависимости (<dependency> </dependency>).

    • Введите следующую информацию в теге зависимости.

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Добавить зависимость для Cucumber-Java: это укажет Maven, какие файлы Cucumber должны быть загружены из центрального репозитория в локальный репозиторий.

    • Создайте еще один тег зависимости.

    • Введите следующую информацию в теге зависимости.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Добавить зависимость для Cucumber-JUnit: это укажет Maven, какие файлы Cucumber JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

    • Создайте еще один тег зависимости.

    • Введите следующую информацию в теге зависимости.

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Добавить зависимость для JUnit - это укажет Maven, какие файлы JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

    • Создайте еще один тег зависимости.

    • Введите следующую информацию в теге зависимости.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Добавить зависимость для JUnit - это укажет Maven, какие файлы JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

    • Создайте еще один тег зависимости.

    • Введите следующую информацию в теге зависимости.

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Проверить двоичные файлы.

    • После успешного редактирования pom.xml сохраните его.

    • Перейдите в Project → Clean - это займет несколько минут.

Step 2 - Создайте пакет с именем «схема» в src/test/java

Step 3 - Создайте файл функций с именем “outline.feature”

  • Выберите и щелкните правой кнопкой мыши контур пакета.

  • Щелкните "Новый" файл.

  • Дайте имя файла, например “outline.feature”

    • Напишите в файле следующий текст и сохраните его.

      Feature - Схема сценария

      Scenario Outline - Функциональность входа в социальную сеть.

      Данный пользователь переходит на Facebook

      Когда я ввожу имя пользователя как «<имя пользователя>» и пароль как «<пароль>»

      Тогда вход в систему должен быть неудачным

Example -

| username  | password  | 
| username1 | password1 | 
| username2 | password2 |

Note- Здесь пример аннотации описывает диапазон входных данных, предоставляемых при выполнении сценария. Сценарий тестирования будет выполняться для каждого из предоставленных входных данных. Итак, в данном примере тестовый сценарий будет выполнен трижды.

Step 4 - Создайте файл определения шага.

  • Выберите и щелкните правой кнопкой мыши контур пакета.

  • Щелкните "Новый" файл.

  • Дайте имя файла как stepdefinition.java

  • Напишите в файле следующий текст и сохраните его.

package Outline;
 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import cucumber.annotation.en.Given; 
import cucumber.annotation.en.Then; 
import cucumber.annotation.en.When; 

public class stepdefinition { 
   WebDriver driver = null; 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      driver = new FirefoxDriver(); 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
	
   @When("^I enter 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(); 
   }    
}

Note- В приведенном выше коде мы должны определить функцию с двумя входными аргументами: одно имя пользователя, а другое - пароль. Таким образом, для каждого набора входных данных, представленных в примере тега, будет выполняться набор GIVEN, WHEN и THEN.

Step 5 - Создайте файл класса бегуна.

  • Выберите и щелкните правой кнопкой мыши контур пакета.

  • Щелкните "Новый" файл.

  • Дайте имя файла, например runTest.java

  • Напишите в файле следующий текст и сохраните его.

package Outline; 

import org.junit.runner.RunWith; 
import cucumber.junit.Cucumber; 

@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})

public class runTest { }
  • Запустите тест, используя опцию -

    • Выбрать runTest.java файл из проводника пакетов.

    • Щелкните правой кнопкой мыши и выберите параметр ‘Run as’.

    • Выберите тест JUnit.

Когда вы запустите этот файл класса, вы увидите следующее.

  • Facebook открывается в новом экземпляре веб-браузера Firefox.

  • Имя пользователя1 и пароль1 будут переданы в качестве входных данных в поле имени пользователя и пароля.

  • Будет щелкнуть логин.

  • В браузере будет отображаться сообщение о неудачном входе в систему.

  • На консоли вы увидите напечатанное «Тестовое прохождение».

  • Результат шагов с 1 по 5 будет повторно выполнен для username2 и password2.

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