Огурец - Теги

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

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

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

Step 1 - Создайте проект Maven с именем cucumberTag.

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

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

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

Feature - Тег огурца

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

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

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

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

Примеры

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

# следующий сценарий был помечен как SmokeTest, и он должен быть выполнен. @SmokeTest

Scenario:

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

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

Затем пользователь должен быть перенаправлен на повторную попытку входа.

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

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

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

  • Дайте файлу имя, например 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(); 
   } 
}

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

  • Создайте класс бегуна с именем 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 { }
  • Запустить тестовый вариант.

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

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

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

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

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

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

  • Будет загружена страница повторной попытки входа.

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

В основном есть два типа тегов -

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

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

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

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

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

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

public class runTest { }

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

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

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