Учебники

Огурец — краткое руководство

Огурец — Обзор

Чтобы получить больше преимуществ от тестирования программного обеспечения, организации в настоящее время делают шаг вперед. Они реализуют важные сценарии приемочных испытаний, пока идет разработка. Этот подход обычно известен как развитие, управляемое поведением (BDD).

Behavior Driven Development дает нам возможность создавать тестовые сценарии как с точки зрения разработчика, так и клиента. Таким образом, вначале разработчики, менеджеры проектов, QA, тестировщики приемлемости пользователей и владелец продукта (акционер) все собрались вместе и обсудили, какие тестовые сценарии следует пройти, чтобы назвать это программное обеспечение / приложение успешным. Таким образом, они предлагают набор тестовых сценариев. Все эти тестовые сценарии написаны на простом английском языке, поэтому они также служат для документации.

пример

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

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

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

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

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

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

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

Как это устроено

К тому времени, когда код готов, тестовые сценарии тоже готовы. Код должен пройти тестовые сценарии, определенные в BDD. Если этого не произойдет, потребуется рефакторинг кода. Код блокируется только после успешного выполнения определенных тестовых сценариев.

BDD

Это очень простое понятие, но то, что нам нужно для реализации этой концепции. Ответ таков: структура, управляемая поведением (BDD). Cucumber — один из таких инструментов с открытым исходным кодом, который поддерживает разработку, основанную на поведении. Чтобы быть более точным, Cucumber может быть определен как структура тестирования, основанная на простом английском тексте. Он служит документацией, автоматизированными тестами и средством разработки — все в одном.

Так что же делает огурец? Это может быть описано в следующих шагах —

Огурец читает код, написанный простым английским текстом (язык Gherkin — будет представлен позже в этом руководстве) в файле возможностей (будет представлен позже).

Он находит точное соответствие каждого шага в определении шага (файл кода — подробности предоставлены позже в руководстве).

Куском кода, который должен быть выполнен, могут быть различные программные среды, такие как Selenium, Ruby on Rails и т. Д. Не каждый инструмент среды BDD поддерживает каждый инструмент.

Это стало причиной популярности Cucumber среди других фреймворков, таких как JBehave, JDave, Easyb и т. Д.

Cucumber поддерживает более десятка различных программных платформ, таких как —

  • Рубин на рельсах
  • Селен
  • PicoContainer
  • Spring Framework
  • Watir

Преимущества огурца перед другими инструментами

  • Cucumber поддерживает разные языки, такие как Java.net и Ruby.

  • Он действует как мост между деловым и техническим языком. Мы можем сделать это, создав тестовый пример в простом английском тексте.

  • Он позволяет писать тестовый скрипт без знания какого-либо кода, он также позволяет привлекать и непрограммистов.

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

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

Cucumber поддерживает разные языки, такие как Java.net и Ruby.

Он действует как мост между деловым и техническим языком. Мы можем сделать это, создав тестовый пример в простом английском тексте.

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

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

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

Огурец — Окружающая среда

В этой главе мы увидим настройку среды для Cucumber с Selenium WebDriver и Java на Windows Machine.

Предварительные условия для настройки среды

Ниже приведены предварительные условия, необходимые для настройки —

Джава

Зачем нам нужно — Java — это надежный язык программирования. Cucumber поддерживает платформу Java для выполнения.

Как установить

Шаг 1 — Загрузите jdk и jre по следующей ссылке http://www.oracle.com/technetwork/java/javase/downloads/index.html

Шаг 2 — Примите лицензионное соглашение.

Шаг 3 — Установите JDK и JRE.

Шаг 4 — Установите переменную среды, как показано на следующих скриншотах.

Свойства системы

Изменить системную переменную

Затмение

Зачем нам это нужно — Eclipse — интегрированная среда разработки (IDE). Он содержит базовое рабочее пространство и расширяемую систему плагинов для настройки среды.

Как установить

Шаг 1 — Убедитесь, что на вашем компьютере установлена ​​JAVA.

Шаг 2 — Загрузите Eclipse с https://eclipse.org/downloads/

Шаг 3 — Распакуйте и Eclipse установлен.

специалист

Зачем нам это нужно — Maven — это инструмент автоматизации сборки, используемый в основном для проектов Java. Он предоставляет общую платформу для выполнения таких действий, как генерация исходного кода, компиляция кода, упаковка кода в jar и т. Д. Позже, если какая-либо из версий программного обеспечения изменяется, Maven предоставляет простой способ соответствующим образом изменить тестовый проект.

Как установить

Шаг 1 — Загрузите Maven по следующей ссылке — https://maven.apache.org/download.cgi

Шаг 2 — Распакуйте файл и запомните местоположение.

Шаг 3 — Создайте переменную окружения MAVEN_HOME, как показано на следующем снимке экрана.

Системные переменные

Шаг 4 — Редактируйте переменную Path и включите Maven, как показано на следующем снимке экрана.

Изменить переменную пути

Шаг 5 — Загрузите плагин MAVEN из Eclipse.

Шаг 6 — Откройте Eclipse.

Шаг 7 — Перейдите в Справка → Торговая площадка Eclipse → Поиск Maven → Интеграция Maven для Eclipse → INSTALL.

Настройте огурец с Maven

Шаг 1 — Создайте проект Maven.

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

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

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

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

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

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

Проект New Maven

Шаг 2 — Откройте pom.xml.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>

Шаг 4. Добавление зависимости для Cucumber-Java: это будет указывать Maven, какие файлы Cucumber должны быть загружены из центрального репозитория в локальный репозиторий.

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

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

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

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

<dependency> 
   <groupId>info.cukes</groupId>
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

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

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

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

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

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

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

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

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

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

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

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

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>

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

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

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

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

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

Вы сможете увидеть репозиторий Maven, как показано на следующем скриншоте.

Проводник пакетов

  • Создайте файл объектов (будет рассмотрен позже).

  • Создайте файл определения шага (будет рассмотрен позже).

  • Создайте JUnit Runner для запуска теста (будет рассмотрено позже).

Создайте файл объектов (будет рассмотрен позже).

Создайте файл определения шага (будет рассмотрен позже).

Создайте JUnit Runner для запуска теста (будет рассмотрено позже).

Огурец — корнишоны

Пока что у нас есть понимание огурца и того, что он делает. Он выполняет тестовые сценарии, которые были определены в файле возможностей (о чем пойдет речь в последующих главах). Язык, на котором написаны эти исполняемые файлы объектов, известен как Gherkin . Gherkin — это простой английский текстовый язык, который помогает инструменту Cucumber интерпретировать и выполнять тестовые сценарии.

Можно подумать, что много раз обсуждалось, что Cucumber поддерживает простой английский текст, тогда почему нам нужен отдельный язык — корнишоны. Ответ лежит в концепции развития, управляемого поведением.

Как обсуждалось ранее, мы видели, что BDD включает различные перспективы при создании тестовых сценариев. Это может быть перспектива развития, бизнес-перспективы и т. Д. При этом нам понадобятся люди из разных сообществ, такие как разработчики, менеджеры проектов, владельцы продуктов и тестировщики при разработке сценариев тестирования. Поскольку эти люди не принадлежат к одной и той же категории, существует риск не использовать общий язык для концептуализации тестового сценария. Это было точкой эволюции для корнишонов.

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

пример

Особенность — Функциональность входа для сайта социальной сети. Учитывая, что я пользователь социальной сети. Когда я ввожу имя пользователя как username1. И я ввожу пароль как пароль1. Тогда я должен быть перенаправлен на домашнюю страницу сайта.

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

Пример нескольких других ключевых слов —

  • Фон
  • Но
  • *
  • План сценария
  • Примеры

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

Вы можете найти банки с корнишонами в папке Maven Dependency в Package Explorer. Он загружается вместе с другими банками огурца. Это будет похоже на следующий скриншот —

Корнишоны

Еще один интересный факт о корнишоне — он поддерживает не только английский, но и многие другие родные языки, такие как французский, финский, индонезийский, венгерский, хинди, урду, гуджарати и т. Д.

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

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

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

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

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

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

  • Выйти.

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

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

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

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

Выйти.

К настоящему времени ясно, что каждая независимая функциональность тестируемого продукта может быть названа как особенность, когда мы говорим о 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 для автоматизации наших этапов тестирования.

Огурец — Сценарии

Сценарий является одной из основных структур корнишона. Каждый сценарий начинается с ключевого слова «Сценарий:» (или локализованного) и сопровождается необязательным заголовком сценария. Каждая функция может иметь один или несколько сценариев, и каждый сценарий состоит из одного или нескольких этапов. Очень простой пример сценария может быть —

Сценарий — проверка функциональности справки.

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

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

Рассмотрим случай, когда нам нужно выполнить тестовый сценарий более одного раза. Предположим, нам нужно убедиться, что функция входа в систему работает для всех типов подписчиков. Это требует выполнения сценария функциональности входа в систему несколько раз. Скопируйте и вставьте те же шаги, чтобы просто повторно выполнить код, не кажется разумной идеей. Для этого Огурец предоставляет еще одну структуру — схему сценария.

Схема сценария аналогична структуре сценария; Единственная разница заключается в предоставлении нескольких входов. Как вы можете видеть в следующем примере, контрольный пример остается тем же и не повторяемым. Внизу мы предоставили несколько входных значений для переменных «Имя пользователя» и «Пароль». Во время выполнения фактического теста Cucumber заменит переменную на введенные значения и выполнит тест. После выполнения pass-1 тест будет перезапущен для второй итерации с другим входным значением. Такая переменная или заполнители могут быть представлены знаком «<>» при упоминании в выражениях корнишона.

пример

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

Когда пользователь входит в систему, используя имя пользователя как «<имя пользователя>» и пароль как «<пароль>», то вход должен быть успешным.

| username | password  | 
| user1    | password1 | 
| user2    | password2 |

Есть несколько советов и приемов, чтобы правильно определить сценарии Cucumber.

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

  • Не повторяйте сценарий тестирования, если необходимо, используйте схему сценария для реализации повторения.

  • Разработайте шаг теста таким образом, чтобы его можно было использовать в нескольких сценариях и набросках сценариев.

  • Насколько это возможно, держите каждый шаг полностью независимым. Например: «Данный пользователь вошел в систему». Это можно разделить на два этапа

    • При условии, что пользователь вводит имя пользователя.
    • Клики по логину.

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

Не повторяйте сценарий тестирования, если необходимо, используйте схему сценария для реализации повторения.

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

Насколько это возможно, держите каждый шаг полностью независимым. Например: «Данный пользователь вошел в систему». Это можно разделить на два этапа

Огурец — Аннотации

Аннотация — это предопределенный текст, который имеет определенное значение. Это позволяет компилятору / интерпретатору знать, что нужно делать после выполнения. Огурец получил следующие несколько аннотаций —

  • Дано

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

    • Пример — ПОДАРОК ​​Я пользователь Facebook

  • Когда

    • Он определяет точку запуска для выполнения любого тестового сценария.

    • Пример — КОГДА я ввожу «<имя пользователя>»

  • Тогда

    • Затем содержит ожидаемый результат для теста, который будет выполнен.

    • Пример — ТОГДА логин должен быть успешным.

  • И

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

    • Пример — КОГДА я ввожу свой «<username>» И я вводю свой «<пароль>»

  • Но

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

    • Пример — ТОГДА логин должен быть успешным. НО домашняя страница не должна отсутствовать.

  • Сценарий

    • Подробная информация о сценарии в тесте должна быть зафиксирована после ключевого слова «Сценарий:»

    • Пример —

      Сценарий:

      ПОДАРОК ​​Я пользователь Facebook

      КОГДА я вхожу в

      И я вхожу в мой

      ТОГДА логин должен быть успешным.

      НО домашняя страница не должна отсутствовать.

  • План сценария — (будет рассмотрен позже)

  • Примеры — (будет рассмотрено позже)

  • Фон

    • Фон обычно содержит инструкцию о том, что настраивать перед выполнением каждого сценария. Однако он выполняется после хука «До» (будет рассмотрен позже). Так что это идеально подходит для кода, когда мы хотим настроить веб-браузер или установить соединение с базой данных.

      • Пример —

        Фон:

        Перейти на домашнюю страницу Facebook.

Дано

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

Пример — ПОДАРОК ​​Я пользователь Facebook

Когда

Он определяет точку запуска для выполнения любого тестового сценария.

Пример — КОГДА я ввожу «<имя пользователя>»

Тогда

Затем содержит ожидаемый результат для теста, который будет выполнен.

Пример — ТОГДА логин должен быть успешным.

И

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

Пример — КОГДА я ввожу свой «<username>» И я вводю свой «<пароль>»

Но

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

Пример — ТОГДА логин должен быть успешным. НО домашняя страница не должна отсутствовать.

Сценарий

Подробная информация о сценарии в тесте должна быть зафиксирована после ключевого слова «Сценарий:»

Пример —

Сценарий:

ПОДАРОК ​​Я пользователь Facebook

КОГДА я вхожу в

И я вхожу в мой

ТОГДА логин должен быть успешным.

НО домашняя страница не должна отсутствовать.

План сценария — (будет рассмотрен позже)

Примеры — (будет рассмотрено позже)

Фон

Фон обычно содержит инструкцию о том, что настраивать перед выполнением каждого сценария. Однако он выполняется после хука «До» (будет рассмотрен позже). Так что это идеально подходит для кода, когда мы хотим настроить веб-браузер или установить соединение с базой данных.

Пример —

Фон:

Перейти на домашнюю страницу Facebook.

Пример сценария

Давайте автоматизируем сценарий, чтобы лучше понимать аннотации.

Шаг 1

Создайте тестовый проект Maven с именем AnnotationTest .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Найдите файл 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>
  • Проверьте двоичные файлы.

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

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

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

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

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

Шаг 2

Создайте пакет с именем Annotation в src / test / java

  • Выберите недавно созданный проект.

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

  • Выберите опцию «Пакет».

  • Назовите это как «Аннотация».

  • Сохрани это.

Выберите недавно созданный проект.

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

Выберите опцию «Пакет».

Назовите это как «Аннотация».

Сохрани это.

Шаг 3

Создайте файл объектов с именем annotation.feature .

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

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

  • Дайте файлу имя, такое как outline.feature .

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

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

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

Дайте файлу имя, такое как outline.feature .

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

Feature: annotation 
#This is how background can be used to eliminate duplicate steps 

Background: 
   User navigates to Facebook Given 
   I am on Facebook login page 

#Scenario with AND 
Scenario: 
   When I enter username as "TOM"
   And I enter password as "JERRY" 
   Then Login should fail 

#Scenario with BUT 
Scenario: 
   When I enter username as "TOM" 
   And I enter password as "JERRY" 
   Then Login should fail 
   But Relogin option should be available

Шаг 4

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

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

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

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

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

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

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

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

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

package Annotation; 

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 annotation { 
   WebDriver driver = null; 
   @Given("^I am on Facebook login page$") 
	
   public void goToFacebook() { 
      driver = new FirefoxDriver(); 
      driver.navigate().to("https://www.facebook.com/"); 
   }
	
   @When("^I enter username as \"(.*)\"$") 
   public void enterUsername(String arg1) {   
      driver.findElement(By.id("email")).sendKeys(arg1); 
   }
	
   @When ("^I enter password as \"(.*)\"$") 
   public void enterPassword(String arg1) {
      driver.findElement(By.id("pass")).sendKeys(arg1);
      driver.findElement(By.id("u_0_v")).click(); 
   } 
	
   @Then("^Login should fail$") 
   public void checkFail() {  
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test1 Pass"); 
      } else { 
         System.out.println("Test1 Failed"); 
      } 
      driver.close(); 
   } 
	
   @Then("^Relogin option should be available$") 
   public void checkRelogin() { 
      if(driver.getCurrentUrl().equalsIgnoreCase(
         "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ 
            System.out.println("Test2 Pass"); 
      } else { 
         System.out.println("Test2 Failed"); 
      } 
      driver.close(); 
   }
} 

Шаг 5

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

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

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

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

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

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

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

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

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

package Annotation; 

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

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

Шаг 6

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

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

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

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

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

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

Выберите JUnit test.

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

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

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

  • Джерри будет передан в качестве ввода в поле пароля.

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

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

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

  • Шаг с 1 по 5. Будет повторен для имени пользователя как «» и пароля как «».

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

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

Джерри будет передан в качестве ввода в поле пароля.

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

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

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

Шаг с 1 по 5. Будет повторен для имени пользователя как «» и пароля как «».

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

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

Давайте продолжим с тем же примером функции входа в 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.

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

Огурец — Теги

Это выглядит просто, когда у нас есть только один, два или, может быть, пять сценариев в файле объектов. Однако в реальной жизни этого не происходит. Для каждой тестируемой функции у нас может быть 10, 20 или больше сценариев в одном файле функций. Они могут представлять разные цели (тест на дымность / регрессионный тест), разные перспективы (разработчик / QA / BA), разный статус (готов к выполнению / работа в процессе) и т. Д. Как управлять выполнением для такой массы?

Для этого Cucumber уже предоставил способ организовать выполнение сценария с помощью тегов в файле объектов. Мы можем определить каждый сценарий с помощью полезного тега. Позже, в файле runner, мы можем решить, какой именно тег (и, соответственно, сценарий) мы хотим, чтобы Cucumber выполнял. Тег начинается с «@». После «@» у вас может быть любой соответствующий текст для определения вашего тега. Давайте разберемся с этим на примере.

Предположим, есть два или более сценариев в файле объектов. Мы хотим выполнить только один сценарий в рамках теста на дым. Итак, во-первых, нужно определить этот сценарий, а во-вторых, пометить его текстом «@SmokeTest» в начале сценария. Давайте глубоко посмотрим на это —

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

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

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

Запишите следующий текст в файл и сохраните его. Этот файл содержит два сценария, в которых только один помечен как тег SmokeTest .

Особенность — огуречный тег

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

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

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

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

Примеры

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

Сценарий #following был помечен как SmokeTest, и это должно быть выполнено. @SmokeTest

Сценарий:

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

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

Затем пользователь должен быть перенаправлен для повторной попытки входа

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

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

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

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

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

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

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

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

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

package cucumberTag;
 
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 cucumberTag { 
   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(); 
   } 
	
   @Then("^User should be redirected to login retry$") 
   public void loginRetry() { 
      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(); 
   } 
}

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

  • Создайте класс бегуна с именем runTest.java внутри пакета.

  • Напишите следующий код.

  • Сохраните файл.

Создайте класс бегуна с именем runTest.java внутри пакета.

Напишите следующий код.

Сохраните файл.

package cucumberTag; 

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

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

public class runTest { }
  • Запустите тестовый вариант.

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

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

Запустите тестовый вариант.

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

Выберите JUnit test.

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

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

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

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

  • Страница повторного входа будет загружена.

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

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

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

Страница повторного входа будет загружена.

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

Есть в основном два типа тегов —

  • Тег по умолчаниютег по умолчанию имеет предопределенные значения. Пример @ Dev, @ Игнорировать

  • Пользовательский тег — Пользовательский тег обеспечивает полную гибкость при выборе подходящего текста для определения вашего тега.

Тег по умолчаниютег по умолчанию имеет предопределенные значения. Пример @ Dev, @ Игнорировать

Пользовательский тег — Пользовательский тег обеспечивает полную гибкость при выборе подходящего текста для определения вашего тега.

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

Огурец также предоставляет способ инвертировать выбор тегов. Учтите, что из 25 определенных сценариев 10 помечены как тесты на дым. Мы обязаны выполнять только сценарии регрессионного тестирования.

Для этого мы можем использовать «~» в классе бегунов JUnit, чтобы исключить сценарий дымовых испытаний. Это будет выглядеть следующим образом.

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

При определении нескольких тегов мы также можем определить логические и / или логические и операции.

  • Определение логического или в классе бегуна — @ dev, @ wip — говорит, что необходимо выполнить сценарии, соответствующие любому из этих тегов.

  • Определение логического или в классе бегуна — [@ dev, ~ @ wip] — говорит, что необходимо выполнить сценарии, соответствующие обоим тегам.

Определение логического или в классе бегуна — @ dev, @ wip — говорит, что необходимо выполнить сценарии, соответствующие любому из этих тегов.

Определение логического или в классе бегуна — [@ dev, ~ @ wip] — говорит, что необходимо выполнить сценарии, соответствующие обоим тегам.

Огурец — таблицы данных

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

С самого начала мы взяли пример функции входа в систему для сайта социальной сети, где у нас было только два входных параметра, которые нужно передать. Давайте подумаем о еще некоторой возможности. Как насчет функциональности «Регистрация нового пользователя»? Как правило, какие могут быть входные параметры при регистрации нового пользователя для сайта социальной сети? Что-то вроде следующего —

  • Имя пользователя
  • Адрес электронной почты
  • пароль
  • Повторно введите пароль
  • Дата рождения
  • Пол
  • Номер телефона

Особенность — Регистрация нового пользователя.

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

Учитывая, что я на новой странице регистрации пользователя.

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

На первый взгляд это выглядит немного грязно. Итак, есть ли лучший способ управлять таким количеством входов? Ответом может быть «Таблица данных». Таблица данных — это набор входных данных для одного тега. Этот тег может быть ДАН, КОГДА или ТОГДА.

Напишем приведенный выше сценарий с помощью таблицы данных, и он будет выглядеть следующим образом:

Учитывая, что я на новой странице регистрации пользователя

Когда я ввожу действительные данные на странице

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | someone@someone.com |
| Re-enter Email Address | someone@someone.com |
| Password               | Password1           |
| Birthdate              | 01                  |

Тогда регистрация пользователя должна быть успешной.

пример

Давайте автоматизируем пример таблицы данных.

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

  • Перейдите в Файл → Создать → Другие → 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>
  • Проверьте двоичные файлы.

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

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

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

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

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

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

Шаг 3 — Создайте файл компонента.

  • Создайте файл объектов с именем dataTable .feature внутри пакета dataTable (более подробные шаги см. В разделе «Сценарий сценария»).

  • Напишите следующий текст.

    Особенность — Таблица данных

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

    Сценарий:

    Учитывая, что я нахожусь на странице регистрации нового пользователя

    Когда я ввожу неверные данные на странице

Создайте файл объектов с именем dataTable .feature внутри пакета dataTable (более подробные шаги см. В разделе «Сценарий сценария»).

Напишите следующий текст.

Особенность — Таблица данных

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

Сценарий:

Учитывая, что я нахожусь на странице регистрации нового пользователя

Когда я ввожу неверные данные на странице

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | someone@someone.com |
| Re-enter Email Address | someone@someone.com |
| Password               | Password1           |
| Birthdate              | 01                  |

Тогда регистрация пользователя должна быть неудачной

  • Сохраните файл.

Сохраните файл.

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

  • Создайте файл определения шага с именем «dataTable.java» внутри пакета dataTable (более подробные шаги см. В разделе «Схема сценария»).

  • Напишите следующий код.

Создайте файл определения шага с именем «dataTable.java» внутри пакета dataTable (более подробные шаги см. В разделе «Схема сценария»).

Напишите следующий код.

package dataTable; 

import java.util.List; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.Select;

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

public class stepdefinition { 
   WebDriver driver = null;
	
   @Given("^I am on new user registration page$") 
   public void goToFacebook() { 
      //Intiate web browser instance. driver = new FirefoxDriver();
      driver.navigate().to("https://www.facebook.com/"); 
   } 
	
   @When("^I enter invalid data on the page$") 
   public void enterData(DataTable table){ 
      //Initialize data table 
      List<list> data = table.raw();
      System.out.println(data.get(1).get(1)); 
      
      //Enter data
      driver.findElement(By.name("firstname")).sendKeys(data.get(1).get(1));
      driver.findElement(By.name("lastname")).sendKeys(data.get(2).get(1));
      driver.findElement(By.name("reg_email__")).sendKeys(data.get(3).get(1));     
      driver.findElement(By.name("reg_email_confirmation__")).
         sendKeys(data.get(4).get(1)); 
      driver.findElement(By.name("reg_passwd__")).sendKeys(data.get(5).get(1)); 
      
      Select dropdownB = new Select(driver.findElement(By.name("birthday_day"))); 
      dropdownB.selectByValue("15"); 
		
      Select dropdownM = new Select(driver.findElement(By.name("birthday_month")));
      dropdownM.selectByValue("6"); 
		
      Select dropdownY = new Select(driver.findElement(By.name("birthday_year")));
      dropdownY.selectByValue("1990"); 
		
      driver.findElement(By.className("_58mt")).click(); 
      // Click submit button driver.findElement(By.name("websubmit")).click(); 
   } 
	
   @Then("^User registration should be unsuccessful$") 
   public void User_registration_should_be_unsuccessful() {
      if(driver.getCurrentUrl().equalsIgnoreCase("https://www.facebook.com/")){
         System.out.println("Test Pass"); 
      } else { 
         System.out.println("Test Failed"); 
      } 
      driver.close(); 
   } 
}
  • Сохраните файл.

Сохраните файл.

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

  • Создайте класс бегуна с именем runTest.java внутри пакета.

  • Напишите следующий код.

Создайте класс бегуна с именем runTest.java внутри пакета.

Напишите следующий код.

package dataTable; 

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 загружается.

  • Данные будут введены на странице регистрации.

  • Кнопка «Отправить» будет нажата.

  • Мы увидим, что домашняя страница не отображается, и на консоли будет написано «Test Pass».

Веб-сайт Facebook загружается.

Данные будут введены на странице регистрации.

Кнопка «Отправить» будет нажата.

Мы увидим, что домашняя страница не отображается, и на консоли будет написано «Test Pass».

Огурец — Комментарии

Комментарий в основном представляет собой кусок кода, предназначенный для целей документирования, а не для выполнения. Будь то файл определения шага или файл возможностей, чтобы сделать его более читаемым и понятным. Поэтому важно использовать / размещать комментарии в соответствующих местах файла. Это также помогает при отладке кода. Файлы объектов огурца могут иметь комментарии в любом месте. Чтобы оставлять комментарии, нам просто нужно начать утверждение со знака «#».

Разные языки программирования имеют разные нормы для определения комментариев. Посмотрим, как с этим справится Cucumber.

  • Файл определения шага. Если вы используете Java в качестве платформы, пометьте свои комментарии знаком «//».

  • Файл функций — В случае файла функций нам просто нужно поставить # перед началом комментария.

Файл определения шага. Если вы используете Java в качестве платформы, пометьте свои комментарии знаком «//».

Файл функций — В случае файла функций нам просто нужно поставить # перед началом комментария.

пример

Выделенный текст в программе ссылается на комментарии в коде.

Feature: annotation 

#This is how background can be used to eliminate duplicate steps 
Background: 
User navigates to Facebook 
Given I am on Facebook login page 

#Scenario with AND 
Scenario: 
When I enter username as "TOM" 
And I enter password as "JERRY" 
Then Login should fail 

#Scenario with BUT 
Scenario: 
When I enter username as "TOM" 
And I enter password as "JERRY" 
Then Login should fail 
But Relogin option should be available

Огурец — крючки

Хук Cucumber позволяет нам лучше управлять рабочим процессом кода и помогает уменьшить избыточность кода. Мы можем сказать, что это невидимый шаг, который позволяет нам выполнять наши сценарии или тесты.

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

Выделенная часть в данном операторе фактически выполняет работу по настройке веб-драйвера и завершению сеанса веб-драйвера. Таким образом, это на самом деле не имеет отношения к сути «данного утверждения», и это больше похоже на настройку для теста. Кроме того, если мы представим более широкую перспективу, то в случае нескольких сценариев для этой функции эта настройка и очистка веб-драйвера будет выполняться с каждым заданным оператором. Логично, что имеет смысл выполнить настройку и очистку только один раз.

Таким образом, для оптимизации можно использовать хуки. Чаще всего мы используем два типа крючков: крючок «До» и крючок «После». Метод / функция / фрагмент кода, определенные в хуках «До» и «После», всегда выполняются, даже если сценарий пройден или не пройден.

Как следует из названия, до того, как ловушка будет выполнена задолго до любых других тестовых сценариев, и после того, как ловушка будет выполнена после выполнения всех сценариев.

Хуки определяются только в файле определения шага.

Давайте автоматизируем пример до и после хука.

Шаг 1 — Создайте проект Maven как hookTest, добавьте необходимую зависимость в pom.xml.

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

Шаг 3 — Создайте файл определения шага с именем hookTest.java в пакете.

package hookTest; 

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 hookTest {
   WebDriver driver = null; 
	
   @Before public void setUp(){ 
      driver = new FirefoxDriver(); 
   } 
	
   @Given("^user navigates to facebook$") 
   public void goToFacebook() { 
      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(); 
   } 
	
   @After public void cleanUp(){ 
      driver.close(); 
   } 
}

Шаг 4 — Создайте файл компонента с именем «hookTest.feature» в пакете.

Особенность — Сценарий Контур.

Схема сценария — Крюк-тест

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

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

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

Примеры

| username  | password  | 
| username1 | password1 |

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

  • Создайте класс runner как runTest.java внутри пакета dataTable (более подробные шаги см. В разделе сценария раздела).

  • Напишите следующий код.

Создайте класс runner как runTest.java внутри пакета dataTable (более подробные шаги см. В разделе сценария раздела).

Напишите следующий код.

package hookTest; 

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.

Итак, теперь, когда мы запустим это, будет следующая последовательность выполнения.

  • Перед подключением — настройте веб-драйвер и другие необходимые условия для запуска теста.

  • Данное заявление

  • Когда заявление

  • Тогда заявление

  • После подключения — Закройте веб-драйвер и выполните процесс очистки.

Перед подключением — настройте веб-драйвер и другие необходимые условия для запуска теста.

Данное заявление

Когда заявление

Тогда заявление

После подключения — Закройте веб-драйвер и выполните процесс очистки.

Tagged Hooks

Мы также можем указать, хотим ли мы, чтобы хуки до и после выполнялись только с определенным тегом. Пример — @Before (‘@ Web’). Та же самая концепция тэга логическая и / или может быть применена и к хукам. Пример — @Before (@ dev, @ wip), @Before (@ dev, ~ @ wip)

Огурец — Параметры командной строки

Огурец можно использовать для тестирования практически любой компьютерной системы. До сих пор мы видели, как запустить тест с использованием Eclipse IDE. Есть еще один способ, с помощью которого мы можем запустить тест Cucumber через интерфейс командной строки. Так в чем преимущество этого?

Запуск любой среды тестирования из Терминала имеет свои преимущества, такие как переопределение конфигураций запуска, упомянутых в коде.

Чтобы выполнить тест Cucumber с помощью командной строки, выполните следующие шаги после настройки системы.

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

  • Перейдите в Файл → Создать → Другие → 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>
  • Проверьте двоичные файлы.

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

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

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

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

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

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

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

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

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

  • Дайте файлу имя, такое как «commandLine.feature»

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

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

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

    Учитывая, что пользователь переходит на Facebook

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

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

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

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

Дайте файлу имя, такое как «commandLine.feature»

Напишите ниже текст в файле и сохраните его.

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

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

Учитывая, что пользователь переходит на Facebook

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

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

Примеры

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

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

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

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

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

  • Назовите файл как commandLine.java

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

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

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

Назовите файл как commandLine.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; i
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 { }
  • Откройте командную строку.

  • Перейдите в каталог, где находится этот пакет «commandLine». e: \ Workspace \ LoginTest \ src> cd test \ java

  • Запустите команду mvn test: вы увидите, что все сценарии, описанные в файле возможностей, были выполнены (если ошибок нет). Наконец, в нижней части вы найдете следующую информацию.

Откройте командную строку.

Перейдите в каталог, где находится этот пакет «commandLine». e: \ Workspace \ LoginTest \ src> cd test \ java

Запустите команду mvn test: вы увидите, что все сценарии, описанные в файле возможностей, были выполнены (если ошибок нет). Наконец, в нижней части вы найдете следующую информацию.

Результат

This describes the total test run, along with failure if any.

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

  • Теперь запустите команду mvn test — Dcucumber.options = «- help» в командной строке. Выполнение этого напечатает все доступные опции.

  • Чтобы запустить только определенные теги, введите в командной строке команду mvn test -Dcucumber.options = «- tags @SmokeTest». Он будет запускать только теги, помеченные @SmokeTest.

  • Чтобы изменить формат результата, в командной строке введите команду E: \ Workspace \ LoginTest> mvn test -Dcucumber.options = «- плагин junit: target / cucumber-junit-report.xml» в командной строке. Изменяет отчет. отформатировать в генератор отчетов JUnit.

Теперь запустите команду mvn test — Dcucumber.options = «- help» в командной строке. Выполнение этого напечатает все доступные опции.

Чтобы запустить только определенные теги, введите в командной строке команду mvn test -Dcucumber.options = «- tags @SmokeTest». Он будет запускать только теги, помеченные @SmokeTest.

Чтобы изменить формат результата, в командной строке введите команду E: \ Workspace \ LoginTest> mvn test -Dcucumber.options = «- плагин junit: target / cucumber-junit-report.xml» в командной строке. Изменяет отчет. отформатировать в генератор отчетов JUnit.

Огурец — Юнит Бегун

Важно понять, что такое Junit, прежде чем мы начнем обсуждение Cucumber JUnit Runner. JUnit — это инфраструктура модульного тестирования с открытым исходным кодом для языка программирования Java. JUnit играет важную роль в разработке управляемой тестами разработки и является одной из семейства платформ модульного тестирования, которые в совокупности известны как xUnit, созданный с помощью SUnit.

Преимущества использования JUnit

  • Модуль имеет графический интерфейс пользователя (GUI), позволяющий быстро и легко писать и тестировать исходный код.

  • JUnit позволяет разработчику постепенно создавать наборы тестов для измерения прогресса и обнаружения непреднамеренных побочных эффектов.

  • Тест может быть запущен непрерывно.

  • JUnit показывает прогресс теста в строке, которая обычно зеленого цвета, но становится красной, если тест не пройден.

Модуль имеет графический интерфейс пользователя (GUI), позволяющий быстро и легко писать и тестировать исходный код.

JUnit позволяет разработчику постепенно создавать наборы тестов для измерения прогресса и обнаружения непреднамеренных побочных эффектов.

Тест может быть запущен непрерывно.

JUnit показывает прогресс теста в строке, которая обычно зеленого цвета, но становится красной, если тест не пройден.

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

Юнит действует как мост между этими двумя. Итак, поток выполнения будет выглядеть следующим образом —

  • Заинтересованные стороны записывают файл функции.

  • Файл определения шага будет создан соответственно.

  • Укажите класс бегуна JUnit для запуска серии тестов.

  • Как только мы запустим класс бегунов JUnit —

    • Он проанализирует файл объектов Gherkin.

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

    • JUnit объединит результат теста.

    • Он создаст протокол испытаний в указанном формате (который может быть html / JSON).

Заинтересованные стороны записывают файл функции.

Файл определения шага будет создан соответственно.

Укажите класс бегуна JUnit для запуска серии тестов.

Как только мы запустим класс бегунов JUnit —

Он проанализирует файл объектов Gherkin.

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

JUnit объединит результат теста.

Он создаст протокол испытаний в указанном формате (который может быть html / JSON).

Важным моментом здесь является то, как настроить JUnit для выполнения всех этих задач? Ниже приведены шаги —

Шаг 1 — Установите Java.

  • Загрузите jdk и jre по ссылке http://www.oracle.com/technetwork/java/javase/downloads/index.html.

  • Принять лицензионное соглашение.

  • Установите JDK и JRE.

  • Установите переменную среды, как показано на следующем снимке экрана.

Загрузите jdk и jre по ссылке http://www.oracle.com/technetwork/java/javase/downloads/index.html.

Принять лицензионное соглашение.

Установите JDK и JRE.

Установите переменную среды, как показано на следующем снимке экрана.

Установить Java

Шаг 2 — Установите Eclipse.

  • Зачем нам это нужно — Eclipse — интегрированная среда разработки (IDE). Он содержит базовое рабочее пространство и расширяемую систему плагинов для настройки среды.

  • Как установить

    • Убедитесь, что JAVA установлен на вашем компьютере.

    • Загрузите Eclipse с http://www.eclipse.org/downloads

    • Распакуйте и Eclipse установлен.

Зачем нам это нужно — Eclipse — интегрированная среда разработки (IDE). Он содержит базовое рабочее пространство и расширяемую систему плагинов для настройки среды.

Как установить

Убедитесь, что JAVA установлен на вашем компьютере.

Загрузите Eclipse с http://www.eclipse.org/downloads

Распакуйте и Eclipse установлен.

Шаг 3 — Установите Maven.

  • Зачем нам это нужно — Maven — это инструмент автоматизации сборки, используемый в основном для проектов Java. Он предоставляет общую платформу для выполнения таких действий, как генерация исходного кода, компиляция кода, упаковка кода в jar и т. Д. Также позже, если какая-либо из версий программного обеспечения изменяется, Maven предоставляет простой способ соответствующим образом изменить тестовый проект.

  • Как установить

    • Скачать Maven — https://maven.apache.org/download.cgi

    • Разархивируйте файл и запомните местоположение.

    • Создайте переменную окружения MAVEN_HOME, как показано на следующем снимке экрана.

Зачем нам это нужно — Maven — это инструмент автоматизации сборки, используемый в основном для проектов Java. Он предоставляет общую платформу для выполнения таких действий, как генерация исходного кода, компиляция кода, упаковка кода в jar и т. Д. Также позже, если какая-либо из версий программного обеспечения изменяется, Maven предоставляет простой способ соответствующим образом изменить тестовый проект.

Как установить

Скачать Maven — https://maven.apache.org/download.cgi

Разархивируйте файл и запомните местоположение.

Создайте переменную окружения MAVEN_HOME, как показано на следующем снимке экрана.

Maven Home

  • Отредактируйте переменную Path и включите Maven, как показано на следующем снимке экрана.

Отредактируйте переменную Path и включите Maven, как показано на следующем снимке экрана.

Переменная пути

  • Загрузите плагин MAVEN из Eclipse.

    • Откройте Затмение.

    • Нужна помощь → Торговая площадка Eclipse → Поиск maven → Интеграция Maven для Eclipse → INSTALL.

Загрузите плагин MAVEN из Eclipse.

Откройте Затмение.

Нужна помощь → Торговая площадка Eclipse → Поиск maven → Интеграция Maven для Eclipse → INSTALL.

Шаг 4 — Как настроить Cucumber с Maven

  • Создайте проект Maven в Eclipse.

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

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

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

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

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

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

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

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

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

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

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

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

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

Создайте проект Maven в Eclipse.

Перейдите в Файл → Создать → Другие → 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>
  • Проверить двоичные файлы

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

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

    • После этого вы сможете увидеть репозиторий Maven, как на следующем скриншоте.

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

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

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

После этого вы сможете увидеть репозиторий Maven, как на следующем скриншоте.

Репозиторий Maven

Шаг 5 — Создайте файл объектов (будет рассмотрен позже).

Шаг 6 — Создать файл определения шага (будет рассмотрен позже).

Шаг 7 — Создайте Junit Runner для запуска теста (будет рассмотрено позже).

Огурец — Отчеты

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

Для этого нам нужно интегрировать Cucumber с другим инструментом с открытым исходным кодом, таким как Ant / Junit. Здесь мы рассмотрим примеры JUnit, поскольку он обеспечивает поддержку языка Java.

Давайте посмотрим на детали другого формата отчета, который доступен и прост в использовании —

Довольно Формат (HTML Отчет)

Pretty Format генерирует отчет теста Cucumber в формате HTML, то есть в формате HTML. Это наиболее читаемый формат отчета. Он генерирует отчет точно так же, как и файл объектов, поэтому отслеживание также упрощается. Также вы можете указать место, куда вы хотите поместить этот отчет после выполнения теста. Это может быть —

  • Локальный каталог. Мы можем указать целевой каталог для отчета как любой локальный каталог компьютера, на котором будет выполняться тест.

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

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

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

пример

Давайте автоматизируем пример красивого формата.

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

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

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

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

Особенность — огуречный отчет

# Это проверка результата теста для теста Pass

Сценарий: функция входа в систему существует

Учитывая, что я открыл браузер

Когда я открываю сайт Facebook

Тогда кнопка логина должна существовать

# Это проверка результата теста для теста Failed

Сценарий: забытый пароль существует

Учитывая, что я открыл браузер

Когда я открываю сайт Facebook

Тогда ссылка на забытый пароль должна существовать

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

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

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

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

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

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

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

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

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

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

package CucumberReport; 

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 cucumberReport { 
   WebDriver driver = null;
	
   @Given("^I have open the browser$") 
   public void openBrowser() { 
      driver = new FirefoxDriver();
   } 
	
   @When("^I open Facebook website$") 
   public void goToFacebook() { 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
	
   @Then("^Login button should exits$") 
   public void loginButton() { 
      if(driver.findElement(By.id("u_0_v")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else { 
         System.out.println("Test 1 Fail");
      }
   } 
	
   @Then("^Forgot password link should exist$") 
   public void forgotPWD() { 
      if(driver.findElement(By.id("")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else {
         System.out.println("Test 1 Fail");
      } 
   } 
}

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

  • Создайте класс бегуна с именем runTest.java внутри пакета.

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

Создайте класс бегуна с именем runTest.java внутри пакета.

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

package CucumberReport; 

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

@RunWith(Cucumber.class) 
@Cucumber.Options( 
   format = {"pretty", "html:target/Destination"} ) 
//Specifying pretty as a format option ensure that HTML report will be generated. 
//When we specify html:target/Destination - It will generate the HTML report 

inside the Destination folder, in the target folder of the maven project.
 
public class runTest { }
  • Запустите тест, используя опцию

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

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

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

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

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

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

Выберите JUnit test.

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

Оба сценария будут выполнены один за другим.

В целевом каталоге будет создана папка с именем Destination.

Огурец Джсон

Отчет будет называться «Index.html».

Откройте Index.html с помощью веб-браузера.

Вы увидите отчет, упомянутый на следующем рисунке —

Огуречный отчет

Это точно выделяет цвет неудачного сценария. Более того, в этом сценарии вы увидите подсветку для неудачного шага. Это делает отладку очень простой.

JSON Report

К настоящему времени мы увидели, насколько прост HTML-отчет. Однако, если мы хотим передать информацию об этом отчете в любое другое приложение, в случае HTML-отчетов это довольно сложно. Здесь возникает необходимость в другом формате отчетности. Нотация объекта сценария JSON-Java является еще одним форматом для создания отчетов об испытаниях Cucumber. JSON — это объект, содержащий много информации, хранящейся в текстовом формате. Отчеты JSON приносят в таблицу другое значение. Отчет JSON также может использоваться в качестве полезной информации, передаваемой между различными серверами. Кроме того, его можно использовать для отображения в виде веб-страницы. В двух словах, отчеты JSON могут использоваться другим приложением.

Что такое информация о полезной нагрузке? Когда данные отправляются через Интернет, каждая передаваемая единица включает в себя как информацию заголовка, так и фактические отправляемые данные. Заголовок идентифицирует источник и назначение пакета, в то время как фактические данные упоминаются как полезная нагрузка. Чтобы сгенерировать отчет JSON, нам просто нужно внести изменения в файл бегуна.

  • Измените параметр формата в файле бегуна следующим образом.

Измените параметр формата в файле бегуна следующим образом.

package CucumberReport; 

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

@RunWith(Cucumber.class) 
@Cucumber.Options( format={"json:target/Destination/cucumber.json"}) 

//When we specify json:target/Destination/cucumber.json - It will generate the JSON  
report inside the Destination folder, in the target folder of the maven project.

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

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

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

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

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

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

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

Выберите JUnit test.

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

    • Оба сценария будут выполнены один за другим.

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

Оба сценария будут выполнены один за другим.

Имя папки

  • Отчет будет называться cucumber.json (как указано в классе бегуна).

  • Откройте файл cucumber.json в текстовом редакторе.

  • Вы увидите отчет, упомянутый на следующем скриншоте после размещения разрывов строк —

Отчет будет называться cucumber.json (как указано в классе бегуна).

Откройте файл cucumber.json в текстовом редакторе.

Вы увидите отчет, упомянутый на следующем скриншоте после размещения разрывов строк —

Текстовый редактор

Примечание. JSON менее читаем по сравнению с форматом отчета HTML.

Огурец — отладка

Весьма вероятно, что ваш тест может не пройти по неизвестным причинам. Выявление причины сбоя и ее устранение очень важно. Этот процесс известен как отладка . Ниже приведены несколько советов и приемов, которые облегчают отладку Cucumber.

Опция отладки доступна в Eclipse. Поместите точку останова. Нажмите на файл и выполните отладку, выполнив следующие действия:

Шаг 1 — Поместите точки останова вручную в файл определения шага Ruby.

пример

require 'ruby-debug' 
Then /^the process should exit cleanly$/ do 
breakpoint 
assert @exited_cleanly, "Process did not exit cleanly: #{@stdout}" 
end

Шаг 2 — Мы также можем определить отдельный шаг отладки, как показано ниже в файле определения шага.

Then /^I debug$/ do 
breakpoint 
0 
end

Шаг 3Webrat — это инструмент по умолчанию для тестирования огурцов с помощью Rails. Это позволяет вам делать такие вещи, как щелкать ссылки, вводить и отправлять формы и так далее.

Будут времена, когда вы будете пытаться нажать на что-то, например, и это не там. Вы получите большой кусок HTML-кода, и выяснить, что именно это означает, может быть очень сложно.

save_and_open_page

Webrat предоставляет метод save_and_open_page, который захватывает текущий HTML-код, сохраняет его, а затем открывает его в браузере. Очень полезно.

When /^I follow "(.*)"$/ do |link| 
save_and_open_page 
click_link(link) 
end

Огурец — тестирование Java

Чтобы запустить тест Cucumber с Java, выполните следующие действия.

Шаг 1 — Установите Java —

Скачать JDK и JRE из

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Принять лицензионное соглашение.

Установите JDK и JRE.

Установите переменную среды, как показано на следующем рисунке.

Переменная среды

Шаг 2 — Установите Eclipse IDE —

  • Убедитесь, что JAVA установлен на вашем компьютере.

  • Загрузите Eclipse с https://eclipse.org/downloads/

  • Разархивируйте и установите Eclipse.

Убедитесь, что JAVA установлен на вашем компьютере.

Загрузите Eclipse с https://eclipse.org/downloads/

Разархивируйте и установите Eclipse.

Шаг 3 — Установите Maven —

  • Скачать Maven — https://maven.apache.org/download.cgi

  • Разархивируйте файл и запомните местоположение.

  • Создайте переменную окружения MAVEN_HOME, как показано на следующем рисунке.

Скачать Maven — https://maven.apache.org/download.cgi

Разархивируйте файл и запомните местоположение.

Создайте переменную окружения MAVEN_HOME, как показано на следующем рисунке.

Apache Maven

  • Отредактируйте переменную Path и включите Maven.

  • Скачать плагин MAVEN от Eclipse

    • Откройте Затмение.

    • Нужна помощь → Торговая площадка Eclipse → Поиск maven → Интеграция Maven для Eclipse → INSTALL

Отредактируйте переменную Path и включите Maven.

Скачать плагин MAVEN от Eclipse

Откройте Затмение.

Нужна помощь → Торговая площадка Eclipse → Поиск maven → Интеграция Maven для Eclipse → INSTALL

Шаг 4 — Настройте огурец с Maven.

  • Создать проект Maven.

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

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

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

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

Создать проект Maven.

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

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

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

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

Maven Project

Шаг 5 — Откройте pom.xml —

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>

Шаг 7. Добавление зависимости для Cucumber-Java. Это будет указывать Maven, какие файлы Cucumber необходимо загрузить из центрального репозитория в локальный репозиторий.

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

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

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

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

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

Шаг 8. Добавление зависимости для Cucumber-JUnit. Это будет указывать Maven, какие файлы Cucumber JUnit необходимо загрузить из центрального репозитория в локальный репозиторий.

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

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

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

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

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>

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

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

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

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

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

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>

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

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

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

  • Вы сможете увидеть хранилище Maven.

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

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

Вы сможете увидеть хранилище Maven.

Шаг 11 — Создайте пакет в src / test / java с именем cucumberJava .

Шаг 12 — Создайте файл объектов

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

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

  • Дайте файлу имя, например cucumberJava.feature .

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

    Особенность: огурецЯва

    Сценарий: функция входа в систему существует

    Учитывая, что я открыл браузер

    Когда я открываю сайт Facebook

    Тогда кнопка логина должна выйти

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

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

Дайте файлу имя, например cucumberJava.feature .

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

Особенность: огурецЯва

Сценарий: функция входа в систему существует

Учитывая, что я открыл браузер

Когда я открываю сайт Facebook

Тогда кнопка логина должна выйти

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

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

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

  • Дайте имени файла имя, такое как annotation.java .

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

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

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

Дайте имени файла имя, такое как annotation.java .

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

package CucumberJava; 
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 cucumberJava { 
   WebDriver driver = null; 
   @Given("^I have open the browser$") 
   public void openBrowser() { 
      driver = new FirefoxDriver(); 
   } 
   @When("^I open Facebook website$") 
   public void goToFacebook() { 
      driver.navigate().to("https://www.facebook.com/"); 
   } 
   @Then("^Login button should exits$") 
   public void loginButton() { 
      if(driver.findElement(By.id("u_0_v")).isEnabled()) { 
         System.out.println("Test 1 Pass"); 
      } else { 
         System.out.println("Test 1 Fail"); 
      } 
      driver.close(); 
   } 
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выберите JUnit test.

После выполнения вы увидите следующие вещи:

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

  • Откроется страница входа в Facebook в браузере.

  • Он обнаружит кнопку входа.

  • Браузер закроется.

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

Откроется экземпляр веб-браузера Firefox.

Откроется страница входа в Facebook в браузере.

Он обнаружит кнопку входа.

Браузер закроется.

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

Огурец — Рубиновый Тест

Язык Ruby имеет следующие преимущества —

  • Это легко понять.

  • Это объектно-ориентированный язык.

  • Это мощная библиотека классов.

  • Он имеет массовую онлайн-поддержку.

Это легко понять.

Это объектно-ориентированный язык.

Это мощная библиотека классов.

Он имеет массовую онлайн-поддержку.

Ниже приведен пошаговый процесс работы Cucumber с Ruby.

Шаг 1 — Установите Ruby.

  • Перейти на страницу загрузки RubyInstaller.

  • Загрузите версию, наиболее подходящую для вашей операционной системы (то есть 32- или 64-разрядную).

  • Запустите скачанный exe.

  • Во время установки установите флажки «Добавить Ruby…» и «Связать …», как показано на следующем рисунке.

Перейти на страницу загрузки RubyInstaller.

Загрузите версию, наиболее подходящую для вашей операционной системы (то есть 32- или 64-разрядную).

Запустите скачанный exe.

Во время установки установите флажки «Добавить Ruby…» и «Связать …», как показано на следующем рисунке.

Настройка Ruby

Шаг 2 — Загрузите и распакуйте комплект разработчика.

  • Перейти на страницу загрузки RubyInstaller.

  • Загрузите версию Devkit, наиболее подходящую для вашей операционной системы (т.е. 32- или 64-разрядную).

  • Извлеките devkit в папку c: \ Ruby \ Devkit.

  • Откройте командную строку.

  • Внутри Ruby devkit выполните следующую команду.

Перейти на страницу загрузки RubyInstaller.

Загрузите версию Devkit, наиболее подходящую для вашей операционной системы (т.е. 32- или 64-разрядную).

Извлеките devkit в папку c: \ Ruby \ Devkit.

Откройте командную строку.

Внутри Ruby devkit выполните следующую команду.

C:\Ruby\devkit> ruby dk.rb init 
C:\Ruby\devkit> ruby dk.rb install

Шаг 3 — Установите огурец и другой рубиновый камень.

  • Чтобы установить Cucumber, сначала обновите текущую настройку гема

Чтобы установить Cucumber, сначала обновите текущую настройку гема

C:\Users\Admin> gem update –system
  • Затем установите драгоценные камни, необходимые для веб-тестирования Cucumber.

Затем установите драгоценные камни, необходимые для веб-тестирования Cucumber.

C:\Users\Admin> gem install --no-ri --no-rdoc rspec 
C:\Users\Admin> gem install --no-ri --no-rdoc win32console 
C:\Users\Admin> gem install --no-ri --no-rdoc watir-webdriver 
C:\Users\Admin> gem install --no-ri --no-rdoc cucumber
  • Запустить огурец

Запустить огурец

C:\Users\Admin\Documents>cucumber –init 
C:\Users\Admin\Documents>cucumber

Шаг 4 — Установите IDE — KOMODO.

  • Перейти на страницу http://www.activestate.com/komodo-ide/downloads

  • Загрузите бесплатный пробный установщик.

  • Дважды щелкните по загруженному exe.

  • Следуйте инструкциям по установке.

  • Завершите установку и откройте IDE.

Перейти на страницу http://www.activestate.com/komodo-ide/downloads

Загрузите бесплатный пробный установщик.

Дважды щелкните по загруженному exe.

Следуйте инструкциям по установке.

Завершите установку и откройте IDE.

Шаг 5. Установите Watir. Перейдите в командную строку и выполните следующую команду: «gem install watir».

Шаг 6 — Установите rspec. Перейдите в командную строку и выполните следующую команду: «gem install rspec»

Шаг 7 — Создание файла объектов.

  • Откройте редактор KOMODO.

  • Нажмите на иконку нового файла.

  • Напишите следующий текст.

    Особенность: пользователи должны иметь возможность искать контент с помощью Google.

    Сценарий: поиск по термину.

    Учитывая, что я ввел «watir» в запрос.

    Когда я нажимаю «поиск»

    Тогда я должен увидеть некоторые результаты

Откройте редактор KOMODO.

Нажмите на иконку нового файла.

Напишите следующий текст.

Особенность: пользователи должны иметь возможность искать контент с помощью Google.

Сценарий: поиск по термину.

Учитывая, что я ввел «watir» в запрос.

Когда я нажимаю «поиск»

Тогда я должен увидеть некоторые результаты

  • Нажмите значок сохранения .

  • Дайте имя как CucumberRuby.feature.

  • Выберите любую папку, например: «e: \ WithRuby»

  • Сохраните файл.

Нажмите значок сохранения .

Дайте имя как CucumberRuby.feature.

Выберите любую папку, например: «e: \ WithRuby»

Сохраните файл.

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

  • Откройте редактор KOMODO.

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

  • Напишите следующий код.

Откройте редактор KOMODO.

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

Напишите следующий код.

require "watir-webdriver" 
require "rspec/expectations" 

Given /^I have entered "([^"]*)" into the query$/ do |term| 
@browser ||= Watir::Browser.new :firefox 
@browser.goto "google.com" 
@browser.text_field(:name => "q").set term 
end 

When /^I click "([^"]*)"$/ do |button_name| 
@browser.button.click 
end 

Then /^I should see some results$/ do 
@browser.div(:id => "resultStats").wait_until_present 
@browser.div(:id => "resultStats").should exist 
@browser.close 
End
  • Нажмите значок сохранения.

  • Дайте имя как CucumberRuby.rb

  • Выберите любую папку, например: «e: \ WithRuby»

  • Сохраните файл.

Нажмите значок сохранения.

Дайте имя как CucumberRuby.rb

Выберите любую папку, например: «e: \ WithRuby»

Сохраните файл.

Шаг 9 — Создайте тестовый файл.

  • Откройте редактор KOMODO.

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

  • Напишите следующий код.

Откройте редактор KOMODO.

Нажмите на иконку «Новый».

Напишите следующий код.

require "rubygems" 
require "test/unit" 
require "watir-webdriver" 

class GoogleSearch < Test::Unit::TestCase 
def setup 
@browser ||= Watir::Browser.new :firefox 
end 

def teardown 
@browser.close 
end 

def test_search 
@browser.goto "google.com" 
@browser.text_field(:name => "q").set "watir" 
@browser.button.click 
@browser.div(:id => "resultStats").wait_until_present assert 
@browser.title == "watir - Google Search" 
end 
end
  • Нажмите значок Сохранить.

  • Назовите файл как test.rb и выберите любую папку, например: «e: \ WithRuby»

  • Сохраните файл.

Нажмите значок Сохранить.

Назовите файл как test.rb и выберите любую папку, например: «e: \ WithRuby»

Сохраните файл.

Шаг 10 — Запустите файл функции.

  • Перейти к командной строке.

  • Перейти в каталог e: \ WithRuby

  • Запустите следующую команду.

Перейти к командной строке.

Перейти в каталог e: \ WithRuby

Запустите следующую команду.

e:\With Ruby>ruby test.rb

После выполнения вы увидите следующие вещи:

Откроется экземпляр веб-браузера.

Веб-страница Google.com будет загружена.

Поиск текста watir будет введен.

Кнопка поиска будет размещена.

Результаты поиска должны отображаться на веб-странице.

Экземпляр браузера будет закрыт.