Учебники

Огурец — Теги

Это выглядит просто, когда у нас есть только один, два или, может быть, пять сценариев в файле объектов. Однако в реальной жизни этого не происходит. Для каждой тестируемой функции у нас может быть 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] — говорит, что необходимо выполнить сценарии, соответствующие обоим тегам.