TestNG Генериране на отчети в Selenium: Как да генерирам?

⚡ Умно обобщение

TestNG Отчетите са HTML файловете с резултати по подразбиране, които TestNG записва в папката test-output след всяко изпълнение, показвайки кои тестове са преминали, неуспешни или са били пропуснати, както и всички лог файлове на Reporter.

  • 🔘 Изход по подразбиране: Всяко TestNG run създава папка за тестови изходи без допълнителен код.
  • ☑️ Два HTML изгледа: emailable-report.html обобщава резултатите, а index.html предоставя връзки към подробните изгледи.
  • ✅ Дневници на репортера: Reporter.log() записва персонализирани съобщения директно в генерирания отчет.
  • 🧪 Апартаментът работи: Изпълнението на testng.xml групира няколко класа в един консолидиран отчет.
  • 🛠️ Персонализиране: ITestListener и IReporter позволяват на екипа да изгради свой собствен формат за отчети.
  • 📊 Отвъд настройките по подразбиране: ExtentReports и Allure добавят графики, история и прикачени файлове със скрийншотове.

TestNG генериране на отчети в Selenium

Какви са TestNG Доклади?

TestNG Доклади са HTML отчетите по подразбиране, които се генерират, след като тестовите случаи се изпълнят с помощта на TestNG. Тези отчети ви помагат да идентифицирате информацията за тестовите случаи и състоянието на даден проект. TestNG докладите в Selenium Запишете три резултата за всеки метод на тестване — успешен, неуспешен и пропуснат — за да можете да проверите данните за тестовите случаи с един поглед.

Генерирането на отчет е много важно, когато извършвате автоматизирано тестване, както и при ръчно тестване.

  • Като погледнете резултата, можете лесно да определите колко тестови случая са преминали, неуспешни и пропуснати.
  • Разглеждайки отчета, ще разберете какво е състоянието на проекта.

Selenium WebDriver се използва за автоматизиране на уеб приложението, но не генерира никакви отчети самостоятелно.

  • - TestNG ще генерира отчета по подразбиране.
  • Когато изпълните файла testng.xml и обновите проекта, ще получите папка test-output, която съдържа отчетите от TestNG.
  • Щракнете с десния бутон върху emailable-report.html и изберете опцията „Отваряне с уеб браузър“.

Забележка: описаното тук поведение е непроменено в TestNG 7.x. Издания от TestNG Версии 7.6 и нататък изискват JDK 11 или по-висока версия, така че по-стар проект може да се нуждае от повишаване на нивото на JDK, преди да бъдат генерирани отчетите.

Видове TestNG Отчети в папката test-output

Преди да отворите който и да е файл, е полезно да знаете какво всъщност съдържа папката test-output. TestNG записва няколко артефакта при всяко изпълнение и всеки от тях отговаря на различен въпрос.

Файл или папка Какво съдържа Когато е полезно
index.html Докладът за кацане, който е свързан с резултатите, групите, времената и изгледите на докладчика. Разглеждам подробно едно бягане.
имейл-отчет.html Една самостоятелна страница, обобщаваща успешни, неуспешни и пропуснати методи за всеки клас. Споделяне на резултат с хора, които не отварят проекта.
testng-results.xml Машинночетимият XML, написан от вградения XML репортер, със статус и продължителност за всеки метод. Захранване на табло за управление или персонализиран парсер.
junitreports JUnit-формат XML файлове, по един за всеки тестов клас. Всеки CI плъгин, който чете JUnit формат на резултата.
testng-failed.xml Генериран файл от пакет, който изброява само методите, които са се провалили. Повторно изпълнение само на неуспехите, вместо на целия пакет.

Двата HTML файла са тези, които този урок отваря след това, така че ръководството по-долу започва с emailable-report.html.

Как да генерирате отчети в Selenium

Метод-1: emailable-report.html

  1. Кликнете върху опцията „emailable-report.html“
  2. Кликнете върху опция уеб браузър

Екранната снимка по-долу показва как файлът emailable-report.html се отваря от папката test-output.

Избиране на emailable-report.html вътре в TestNG папка с тестови изходи

Изходът се отчита в TestNG отчитането ще изглежда по-долу, ако и двата класа са преминати:

TestNG отчет, който може да се изпрати по имейл, показващ успешно преминатите тестови класове DemoA и DemoB

Помислете за сценария, при който умишлено се проваляте на тестовия случай, т.е. клас DemoB. След това преобразувайте и двата класа във файл със пакет testng.xml и го стартирайте. Тогава резултатът ще изглежда така. Ще покаже на неуспешни тестови случаи.

Това е резултат за клас DemoB:

Доклад, който може да се изпрати по имейл, показващ умишлено неуспешния тестов случай DemoB

По подобен начин резултатът за Class DemoA ще изглежда така:

Обобщение на отчета, който може да се изпраща по имейл, за преминаващия клас DemoA

Метод-2: index.html

  1. Щракнете с десния бутон върху index.html от директорията на проекта.
  2. Изберете опция за отваряне с опция за уеб браузър. Той ще покаже резултата в следния ред.

Екранната снимка по-долу показва как index.html се отваря от директорията на проекта.

Отваряне на index.html от директорията на проекта в уеб браузър

Резултатът ще изглежда така:

TestNG целевата страница на отчета index.html, изброяваща изгледите на резултатите от изпълнението

Метод-3: Репортерски клас

Заедно с тези TestNG отчет генерирани методи, можете да използвате файла object.properties за съхраняване на генерираните от системата регистрационни файлове, както и генерирани от потребителя регистрационни файлове. Но един от най-простите начини за съхраняване на информация в журнала при тестване е използването Репортерски клас.

Reporter.влезте Selenium е клас присъства в TestNG за Selenium отчитане. Той предоставя 4 различни метода за съхраняване на информация от журнала, те са:

  1. Reporter.log(низ s);
  2. Reporter.log(String s, Boolean logToStandardOut);
  3. Reporter.log(Низ s, int ниво);
  4. Reporter.log(String s, int level, Boolean logToStandardOut);

Вторият аргумент решава дали съобщението се показва както в конзолата, така и в отчета, а аргументът „level“ контролира нивото на детайлност, с което се запазва съобщението.

Пример:

Създайте два класа като DemoA и DemoB и напишете следния код вътре в класовете.

За Class DemoA;

  • - Code за DemoA вече е обяснено по-горе. Тук използвате log метод на клас Reporter. (За да имплементирате собствен клас за отчитане, класът трябва да имплементира интерфейса org.testng.IReporter.)
  • Методът log е статичен метод на класа Reporter. Така че имате достъп до този метод чрез класа Reporter.
  • Методът на журнала се използва за съхраняване на информация от журнала, която е записана вътре в програмата. Като прегледате информацията в журнала, лесно ще разберете къде точно е спряно изпълнението на програмата.

Екранната снимка по-долу показва извикванията на Reporter.log, поставени в класа DemoA.

Изрази на Reporter.log, написани в тестовия клас DemoA

За клас DemoB:

Изрази на Reporter.log, написани в тестовия клас DemoB

  • Сега създайте файл testng.xml, като изберете тези два класа и
  • Изберете изпълнение като и
  • Кликнете върху конвертиране в testng.
  • След това стартирайте този файл testng.xml, като изберете изпълнение като и изберете testng suite.
  • След това обновете проекта, отворете папката за тестови изходи.
  1. В папката test-output отворете emailable-report.html. Ще изглежда така:

    Отчет, който може да се изпрати по имейл, се генерира след изпълнение на пакета testng.xml на DemoA и DemoB

    По същия начин ще имате и изход за проект Demo B.

  2. В папката test-output отворете index.html. Той ще изглежда така:

    index.html отчет, създаден след изпълнението на пакета testng.xml

Кликнете върху изхода на репортера. Той ще отвори информация за регистриране, каквото е написано в тестовите методи.

TestNG изглед на изхода на репортера, изброяващ съобщенията, регистрирани от тестовите методи

Кликнете върху Times. Ще покаже колко време е отнело изпълнението на тестовия метод, присъстващ в класа TestNG инструменти за отчитане.

TestNG Изглед „Время“, показващ колко време е отнело изпълнението на всеки тестов метод

Как да персонализирате TestNG Отчети с ITestListener и IReporter

Трите метода по-горе използват каквото и да е TestNG произвежда по подразбиране. Когато екипът се нуждае от различно оформление, допълнителни полета или изглед на напредъка в реално време, TestNG предоставя две точки на разширение, вместо да ви моли да поправите отчета по подразбиране.

  • ITestListener се уведомява в реално време, когато всеки тест започне, премине успешно, неуспешно или бъде пропуснат. Използвайте го, когато информацията трябва да бъде заснета в момента на настъпване на събитието - например екранна снимка при неуспех.
  • IReporter получава известие веднъж, след като всеки пакет е завършил, и получава обекти, описващи цялото изпълнение. Използвайте го, когато резултатът е завършен документ, като например PDF или персонализирана HTML страница.

Слушател, който вкарва всеки резултат в отчета чрез класа Reporter, изглежда така.

import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.Reporter;

public class ReportListener implements ITestListener {

    @Override
    public void onTestSuccess(ITestResult result) {
        Reporter.log("PASSED: " + result.getName(), true);
    }

    @Override
    public void onTestFailure(ITestResult result) {
        Reporter.log("FAILED: " + result.getName(), true);
    }

    @Override
    public void onTestSkipped(ITestResult result) {
        Reporter.log("SKIPPED: " + result.getName(), true);
    }
}

Регистрирането на слушателя се извършва в същия файл testng.xml suite, който вече сте създали за DemoA и DemoB.

<suite name="Demo Suite">
  <listeners>
    <listener class-name="ReportListener" />
  </listeners>
  <test name="Demo Test">
    <classes>
      <class name="DemoA" />
      <class name="DemoB" />
    </classes>
  </test>
</suite>

Докато експериментирате, е добре да знаете два ключа от командния ред. -d опцията променя директорията, в която се записват отчетите, и -usedefaultlisteners false изключва вградените репортери, така че да работи само вашият собствен слушател. И двете са описани в официалния TestNG документиране на регистриране и резултати, който също документира свойствата, приети от вградения XML репортер.

Слушателят се регистрира веднъж и след това се прилага към всеки клас в пакета, поради което екипите, които работят с големи тестване за автоматизация Пакетите обикновено го предпочитат пред ръчното добавяне на лог редове към всеки метод за тестване.

TestNG Отчети по подразбиране срещу ExtentReports срещу Allure

Стандартните отчети са достатъчни за малък пакет, но не съдържат история и нямат графики. Две библиотеки с отворен код обикновено се добавят, когато пакетът расте, и двете работят с TestNG.

Способност TestNG подразбиране Отчети за степента Доклад за чар
Усилие за настройка Няма — генерира се автоматично Добавете библиотеката и напишете кода на репортера Добавете адаптера, след което генерирайте отчета от резултатите
Диаграми и табла за управление Не Да Да
Снимки Само чрез маркировката на Reporter.log Вграден API за прикачени файлове Вграден API за прикачени файлове
История и тенденции на бягане Не Чрез опционалния сървърен компонент Да, от съхранените предишни резултати
Покритие на рамката TestNG само за лична употреба Java и .NET Независим от рамката

Започнете със стандартните отчети, докато пакетът е малък. Преминете към Отчети за степента когато заинтересованите страни поискат четливи табла за управление и да Доклад за чар когато историята на нестабилните тестове в различните компилации стане въпрос, който има значение. Който и да изберете, отчетът обикновено се публикува от заданието за компилация, което е обхванато в Jenkins непрекъсната интеграция настойнически.

Въпроси и Отговори

Папката се появява само след TestNG завършва изпълнението и проектът се обновява в IDE. Празна папка обикновено означава, че класът е стартиран като обикновен Java приложението или слушателите по подразбиране бяха изключени, така че нито един репортер никога не се стартира.

Да. TestNG записва в test-output по подразбиране. Предайте опцията -d в командния ред или задайте изходната директория в конфигурацията за изпълнение на IDE или в настройките на Maven Surefire, които стартират пакета.

Заснемете изображението в метод за слушане, като например onTestFailure, запазете файла до отчета и след това напишете HTML етикет за изображение чрез Reporter.log. Отчетът рендира маркировката, така че изображението се показва до неуспешния метод.

TestNG сам по себе си не изпраща имейл. Екипите обикновено прикачват emailable-report.html от задача за изграждане, например Jenkins стъпка за изпращане на имейл след изграждане или добавяне на малка рутина за имейл в рамките на имплементация на IReporter.

Моделите с изкуствен интелект групират неуспехите по стек-tracсходство, отделяне на истинските дефекти от грешките, свързани с околната среда или времето, и класиране на неуспешните методи, които да се проверят първо. Дълъг списък с отчети, които могат да се изпращат по имейл, се превръща в кратка приоритизирана опашка за екипа.

Копилот на GitHub може да генерира класове слушатели, отчети в Reporter.log и записи в testng.xml от кратък коментар. Revпреглеждайте всяко предложение, защото генерираните слушатели често пропускат точните методи на интерфейса TestNG очаква.

След като IRetryAnalyzer бъде прикачен, всеки повторен опит се записва заедно с крайния резултат. Следователно, отчетът по подразбиране показва всеки опит, така че един нестабилен тест може да се появи едновременно като неуспешен и като успешен в едно и също изпълнение.

Предайте -usedefaultlisteners false в командния ред или задайте useDefaultListeners на false в конфигурацията на Maven Surefire или Ant. След това се изпълняват само репортерите, които регистрирате изрично, което съкращава изпълнението за много големи пакети.

Обобщете тази публикация с: