Учебники

Огурец — набросок сценария

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

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

Сценарий:

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

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

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

Сценарий:

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

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

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

Сценарий:

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

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

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

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

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

пример

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

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

  • Перейдите в Файл → Создать → Другие → Maven → Проект Maven → Далее.

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

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

  • Нажмите на Готово.

  • Откройте pom.xml

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

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

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

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

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

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

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

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

Перейдите в Файл → Создать → Другие → Maven → Проект Maven → Далее.

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

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

Нажмите на Готово.

Откройте pom.xml

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

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

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

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

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

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

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

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

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

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

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

Добавить зависимость для 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 следует загружать из центрального репозитория в локальный репозиторий.

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

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

Добавить зависимость для 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 должны быть загружены из центрального репозитория в локальный репозиторий.

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Перейдите в Проект → Очистить — это займет несколько минут.

Проверьте двоичные файлы.

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

Перейдите в Проект → Очистить — это займет несколько минут.

Шаг 2 — Создайте пакет с именем «outline» в src / test / java

Пакет Java

Шаг 3 — Создайте файл объектов с именем «outline.feature»

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

  • Нажмите на «Новый» файл.

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

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

      Особенность — Схема Сценария

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

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

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

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

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

Нажмите на «Новый» файл.

Дайте имя файла, например, «outline.feature»

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

Особенность — Схема Сценария

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

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

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

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

Пример

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

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

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

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

  • Нажмите на «Новый» файл.

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

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

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

Нажмите на «Новый» файл.

Дайте имя файла как 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(); 
   }    
}

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

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

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

  • Нажмите на «Новый» файл.

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

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

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

Нажмите на «Новый» файл.

Дайте имя файла, например, 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 из проводника пакетов.

    • Щелкните правой кнопкой мыши и выберите параметр «Запуск от имени» .

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

Запустите тест, используя опцию —

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

Щелкните правой кнопкой мыши и выберите параметр «Запуск от имени» .

Выберите JUnit test.

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

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

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

  • Логин будет нажат.

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

  • В консоли вы увидите напечатанный «Test Pass».

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

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

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

Логин будет нажат.

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

В консоли вы увидите напечатанный «Test Pass».

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

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