Учебники

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

Хук 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)