Огурец - Таблицы данных

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

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

  • Имя пользователя
  • Адрес электронной почты
  • Password
  • Повторно введите пароль
  • Birthdate
  • Gender
  • Телефонный номер

Feature - Регистрация нового пользователя.

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

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

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

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

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

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

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

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

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

пример

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

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

  • Перейдите в File → New → Others → Maven → Maven Project → Next.

  • Предоставлять group Id (идентификатор группы однозначно идентифицирует ваш проект для всех проектов).

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

  • Щелкните Готово.

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

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

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

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

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

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

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

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

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

<dependency> 
   <groupId>org.seleniumhq.selenium</groupId> 
   <artifactId>selenium-java</artifactId> 
   <version>2.47.1</version> 
</dependency>
  • Добавить зависимость для Cucumber-Java - это укажет Maven, какие файлы Cucumber должны быть загружены из центрального репозитория в локальный репозиторий.

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

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

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-java</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Добавить зависимость для Cucumber-JUnit - это укажет Maven, какие файлы Cucumber JUnit должны быть загружены из центрального репозитория в локальный репозиторий.

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

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

<dependency> 
   <groupId>info.cukes</groupId> 
   <artifactId>cucumber-junit</artifactId> 
   <version>1.0.2</version> 
   <scope>test</scope> 
</dependency>
  • Добавить зависимость для JUnit - это укажет Maven, какие файлы JUnit следует загрузить из центрального репозитория в локальный репозиторий.

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

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

<dependency> 
   <groupId>junit</groupId> 
   <artifactId>junit</artifactId> 
   <version>4.10</version> 
   <scope>test</scope> 
</dependency>
  • Проверить двоичные файлы.

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

    • Перейдите в Project → Clean - это займет несколько минут.

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

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

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

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

    Feature - Таблица данных

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

    Scenario:

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

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

| Fields                 | Values              |
| First Name             | Tom                 |
| Last Name              | Kenny               |
| Email Address          | [email protected] |
| Re-enter Email Address | [email protected] |
| Password               | Password1           |
| Birthdate              | 01                  |

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

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

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

  • Создайте файл определения шага с именем '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(); 
   } 
}
  • Сохраните файл.

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

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

После успешного выполнения вы можете наблюдать следующие вещи.

  • Сайт Facebook загружается.

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

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

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