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