Рубрики
Без рубрики

Создайте XML-файл TestNG и выполните параллельное тестирование

В предыдущей статье мы узнали о создании тестового проекта в Eclipse и о том, как запустить наш fire… Помечено как тестирование, параллельное тестирование, xml, java.

В предыдущей статье мы узнали о создании тестового проекта в Eclipse и о том, как запустить наш первый в истории тестовый скрипт Selenium. Теперь, когда вы знаете, как запустить тестовый проект Eclipse, пришло время углубиться в тестирование. До сих пор вы запускали только один тестовый сценарий, но в практических сценариях это просто не годится. Когда дело доходит до автоматизации тестирования Selenium, выполнение одного теста за раз будет не очень полезным. Вам придется запустить несколько тестовых примеров, чтобы максимально использовать сетку Selenium. В этом уроке давайте углубимся в то, как мы можем выполнить несколько тестовых файлов из одного файла, известного как XML-файл TestNG . Мы также увидим, как мы можем создать и выполнить набор параллельных тестов с использованием XML-файла TestNG.

В случае, если вы опоздали на серию учебных пособий по тестированию, вот пошаговое руководство по установке TestNG в Eclipse.

Какова цель XML-файла TestNG?

Весь смысл использования платформы тестирования заключается в параллельном выполнении тестов, т.е. одновременном выполнении нескольких тестов. В Java вы должны создавать тестовые примеры отдельно, а затем определять тест позже в основном методе. С другой стороны, тестирование позволяет создавать несколько тестовых примеров одновременно, и именно здесь появляется XML-файл TestNG. XML-файл TestNG облегчает эту задачу, и мы можем писать различные тестовые примеры в рамках одного или нескольких классов, используя аннотации.

Использование XML-файла TestNG:

  • Бесшовное параллельное выполнение
  • Выполнение нескольких тестовых примеров для различных файлов классов Java
  • Групповое выполнение тестовых заданий
  • Поддерживает параметризацию при тестировании и тестировании на основе данных
  • Включая или исключая конкретный метод испытания
  • Включает имена классов, папок и методов
  • Более четкое резюме теста с отдельными отчетами HTML и экстентов
  • Прослушиватели TestNG автоматически создают журналы

Создание XML-файла TestNG

Теперь, когда вы понимаете, насколько важен XML-файл TestNG для выполнения параллельных тестов в сетке Selenium, пришло время узнать, как создать XML-файл TestNG. Прежде чем мы начнем, давайте вернемся к первому тесту, который мы создали с помощью тестирования в предыдущей статье, и выполним следующие действия. Существует два способа создания XML-файла TestNG, не стесняйтесь использовать любой из них-

Способ 1-

  • Щелкните правой кнопкой мыши папку проекта и в нижней части списка выберите “Тестирование”, а затем “Преобразовать в TestNG”.
  • Появится экран, подобный приведенному ниже. Нажмите на кнопку Далее.
  • В следующем появившемся окне будет приведен переработанный исходный код, который будет применим после того, как вы нажмете кнопку Готово.
  • Новое дополнение к вашему каталогу проектов будет отображаться с именем testng.xml .
  • Дважды щелкните по testng.xml чтобы открыть xml-файл, который выглядит следующим образом-

Способ 2-

  • Щелкните правой кнопкой мыши Проект, затем Создать и, наконец, выберите Файл.
  • Затем введите следующее имя файла “testng.xml ” а затем нажмите “Готово”.
  • На этом шаге вам придется ввести XML-код вручную. Вот чем эти два метода отличаются друг от друга. После ввода XML-кода вы можете выбрать имя для понравившегося вам набора и класса.

Вот как выглядит базовый XML-файл-





    
         
             
          
      
 

Теперь вы можете скопировать приведенный выше код (с выбранными вами именами) в XML-файл TestNG, который мы создали выше.

Вуаля! У вас готов ваш самый первый XML-файл TestNG. Это все, что вам нужно сделать, чтобы создать XML-файл TestNG в сетке Selenium или для автоматизации тестирования Selenium.

Запуск XML-файла TestNG

Иерархия XML-файла довольно проста. Это выглядит примерно так – первый < набор > тег, второй < тест > тег и, наконец, < классы > тег. Как упоминалось выше, вы можете дать любое имя тегу пакета и теста, но вы должны быть осторожны при именовании классов, так как это комбинация имени пакета и имени теста.

Поскольку suite является самой верхней иерархией, здесь можно разместить несколько тестовых классов. Например, у нас есть три тестовых класса: один для открытия Google, другой для поиска в Google и один для открытия Gmail. Все эти три класса могут быть определены под одним и тем же тегом теста для выполнения.

Этот пример поможет вам лучше понять это.

Здесь я создал два класса Java – один, который открывает Google и проверяет его название, а другой, который снова открывает Google и ищет строку.

Первоклассный Файл-

package testNG;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
public class TestNGTestOne {
    WebDriver driver;   
  @Test
  public void f() { 
      System.out.println("Start test");
    //Setting up the chrome driver exe, the second argument is the location where you have kept the driver in your system
      System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
    //Setting the driver to chrome driver
      driver = new ChromeDriver();
      String url = "https://www.google.com";
      driver.get(url);
      //Capturing the title and validating if expected is equal to actual
      String expectedTitle = "Google";
      String actualTitle = driver.getTitle();
      Assert.assertEquals(actualTitle, expectedTitle);
  }
  @BeforeMethod
  public void beforeMethod() {
          System.out.println("Starting the browser session");
  }
   @AfterMethod
  public void afterMethod() {
      System.out.println("Closing the browser session");
      driver.quit();
  }
 }

Файл Второго класса-

package testNG;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
 public class TestNGTestTwo {
    WebDriver driver;
      @Test
      public void f() {      
              System.out.println("Start test");
            //Setting up the chrome driver exe, the second argument is the location where you have kept the driver in your system
              System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
            //Setting the driver to chrome driver
              driver = new ChromeDriver();
              String url = "https://www.google.com";
              driver.get(url);
              //Searching the values on google
              WebElement txtBox = driver.findElement(By.xpath("//input[@class='gLFyf gsfi']"));
              txtBox.sendKeys("Lambda Test");
              txtBox.sendKeys(Keys.ENTER);
              }
      @BeforeMethod
      public void beforeMethod() {       
              System.out.println("Starting the browser session");
      }
      @AfterMethod
      public void afterMethod() { 
              System.out.println("Closing the browser session");
              driver.quit();
      }
}

Далее мы создадим XML-файл TestNG, в котором будут использоваться оба описанных выше тестовых примера.





  
    
    
    
    
   
 

В приведенном выше XML-файле вы можете видеть, что два имени классов написаны под тегом test name. Это классы, которые я хотел бы запустить с помощью тестового XML-файла. Также обратите внимание, что я назвал свой тест “Google Test” и набор “Набор тестов” соответственно. Идите вперед и выберите любое имя в соответствии с вашим удобством для этих двоих.

Следующим шагом будет запуск проекта с использованием XML-файла. Щелкните правой кнопкой мыши на testng.xml файл и перейдите в раздел “Запуск от имени >> Набор тестов”.

Делая это, вам не придется запускать классы по отдельности; вместо этого мы будем выполнять оба класса простым щелчком мыши. Вывод после выполнения будет выглядеть следующим образом-

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

Параллельное Тестирование С Использованием TestNG.XML Файл В Облаке Selenium Grid

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

Вы можете использовать облачную сетку Selenium, такую как Lambda Test, которая предоставляет более 2000 реальных браузеров и операционных систем в режиме онлайн. Таким образом, вам нужно сосредоточиться только на написании лучших сценариев автоматизации Selenium.

Итак, позвольте мне показать вам, как вы можете использовать testng.xml для выполнения параллельного тестирования с Selenium на LambdaTest.

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

Давайте взглянем на наш тестовый файл Java.

import java.net.MalformedURLException;
import java.net.URL;

//TestNG Todo : Sample App
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;


public class TestNGToDo {
  public String username = "examplelambdatest";
  public String accesskey = "1234abcd9876";
  public RemoteWebDriver driver = null;
  public String gridURL = "@hub.lambdatest.com/wd/hub";
  boolean status = false;

  @BeforeTest
  @org.testng.annotations.Parameters(value={"browser","version","platform"})
  public void setUp(String browser, String version, String platform) throws Exception {
     DesiredCapabilities capabilities = new DesiredCapabilities();
      capabilities.setCapability("browserName", browser);
      capabilities.setCapability("version", version);
      capabilities.setCapability("platform", platform); // If this cap isn't specified, it will just get the any available one
      capabilities.setCapability("build", "LambdaTestSampleApp");
      capabilities.setCapability("name", "LambdaTestJavaSample");
      capabilities.setCapability("network", true); // To enable network logs
      capabilities.setCapability("visual", true); // To enable step by step screenshot
      capabilities.setCapability("video", true); // To enable video recording
      capabilities.setCapability("console", true); // To capture console logs
      try {
          driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);
      } catch (MalformedURLException e) {
          System.out.println("Invalid grid URL");
      } catch (Exception e) {
          System.out.println(e.getMessage());
      }
  }

  @Test
  public void testSimple() throws Exception {
     try {
            //Change it to production page
          driver.get("https://lambdatest.github.io/sample-todo-app/");

            //Let's mark done first two items in the list.
            driver.findElement(By.name("li1")).click();
          driver.findElement(By.name("li2")).click();

           // Let's add an item in the list.
            driver.findElement(By.id("sampletodotext")).sendKeys("Yey, Let's add it to list");
          driver.findElement(By.id("addbutton")).click();

            // Let's check whether the items we added are in the list.
          String enteredText = driver.findElementByXPath("/html/body/div/div/div/ul/li[6]/span").getText();
          if (enteredText.equals("Yey, Let's add it to list")) {
              status = true;
          }
      } catch (Exception e) {
          System.out.println(e.getMessage());
      }
  }


  @AfterTest
  public void tearDown() throws Exception {
     if (driver != null) {
          ((JavascriptExecutor) driver).executeScript("lambda-status=" + status);
          driver.quit();
      }
  }
}

Чтобы ваш тестовый скрипт Selenium выполнялся поверх лямбда-теста Selenium Grid , вам нужно будет объявить несколько изменений в сценарии. Это потребует указания вашего имени пользователя для лямбда-теста, ключа доступа к лямбда-тесту и URL-адреса концентратора в удаленном webdriver для маршрутизации вашего тестового сценария в сетку LambdaTest Selenium.

driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), capabilities);

Все эти сведения можно найти на вашей панели автоматизации лямбда-тестирования.

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

Для этой цели вы вызвали аннотации параметров в TestNG. – @org.testng.аннотации.Параметры(значение={“браузер”,”версия”,”платформа”})

Теперь вам нужно указать значения этих параметров в вашем testng.xml файл. Затем вы сможете запустить один тест в нескольких браузерах одновременно.

//TestNG.xml





  
  
  
  
    
      
    
   

  
  
  
  
    
      
    
   
  
  
  
  
    
      
    
   


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

Именно по этой причине параллельное тестирование является одной из наиболее востребованных функций Selenium test automation .

Сетка Selenium действительно повысила бы эффективность вашей тестовой сборки. Вместо создания новых тестовых примеров для отдельных сред вы можете использовать testng.xml чтобы определить эти среды в качестве параметров и просто выполнить тест по различным параметрам.

Зачем ломать себе спину, когда вы можете запускать параллельные тесты в облаке Selenium Grid?

Лямбда-тест предоставляет облачную сетку Selenium, в которой вы можете параллельно запускать сценарии тестирования Selenium более чем в 2000 реальных браузерах.

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

Оригинал: “https://dev.to/aboywithscar/create-testng-xml-file-execute-parallel-testing-2a4c”