TestNG Формування звітів в Selenium: Як генерувати?

⚡ Розумний підсумок

TestNG Звіти – це файли результатів HTML за замовчуванням, які TestNG записує дані в папку test-output після кожного запуску, показуючи, які тестові випадки були пройдені, не пройдені або пропущені, а також будь-які журнали Reporter.

  • 🔘 Вихід за замовчуванням: Кожен TestNG Команда run створює папку test-output без будь-якого додаткового коду.
  • ☑️ Два 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-репортером, зі статусом та тривалістю для кожного методу. Завантаження даних на панель інструментів або користувацький парсер.
звіти junitr 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 папка test-output

Вихідні звіти в 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 для зберігання журналів, створених системою, а також журналів, створених користувачем. Але одним із найпростіших способів зберігання інформації журналу під час тестування є використання Репортерський клас.

Репортер.увійти Selenium це клас присутній у TestNG та цінності Selenium звітність. Він надає 4 різні методи зберігання інформації журналу:

  1. Reporter.log(рядок s);
  2. Reporter.log(String s, Boolean logToStandardOut);
  3. Reporter.log(String s, int level);
  4. Reporter.log(String s, int level, Boolean logToStandardOut);

Другий аргумент визначає, чи повідомлення буде відображатися на консолі, а також у звіті, а аргумент level контролює рівень деталізації, з яким зберігається повідомлення.

Приклад:

Створіть два класи, такі як DemoA та DemoB, і напишіть наступний код усередині класів.

Для класу DemoA;

  • Команда Code для DemoA вже пояснено вище. Тут ви використовуєте метод журналу класу Reporter. (Для реалізації власного класу звітності, цей клас має реалізувати інтерфейс org.testng.IReporter.)
  • Метод журналу є статичним методом класу Reporter. Отже, ви отримуєте доступ до цього методу через клас Reporter.
  • Метод журналу використовується для зберігання інформації журналу, яка записується всередині програми. Переглядаючи інформацію журналу, ви легко дізнаєтеся, де саме зупинено виконання програми.

На скріншоті нижче показано виклики Reporter.log, розміщені всередині класу DemoA.

Оператори Reporter.log, написані всередині тестового класу DemoA

Для класу DemoB:

Оператори Reporter.log, написані всередині тестового класу DemoB

  • Тепер створіть файл testng.xml, вибравши ці два класи та
  • Виберіть запустити як і
  • Натисніть «Перетворити на testng».
  • Потім запустіть цей файл testng.xml, вибравши «Запустити як» і виберіть «Набір testng».
  • Потім оновіть проект, відкрийте папку test-output.
  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, який ви вже створили для 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 дефолт ExtentReports Звіт Allure
Зусилля з налаштування Немає — створюється автоматично Додайте бібліотеку та напишіть код репортера Додайте адаптер, а потім згенеруйте звіт на основі результатів
Діаграми та інформаційні панелі Немає Так Так
Скріншоти Тільки через розмітку Reporter.log Вбудований API вкладень Вбудований API вкладень
Історія та тенденції пробігу Немає Через додатковий серверний компонент Так, зі збережених попередніх результатів
Покриття рамкової програми TestNG тільки Java та .NET Фреймворк агностик

Почніть зі звітів за замовчуванням, поки пакет невеликий. Перейдіть до ExtentReports коли зацікавлені сторони запитують зручні для читання інформаційні панелі, а також Звіт Allure коли історія нестабільного тестування в різних збірках стає важливим питанням. Який би варіант ви не обрали, звіт зазвичай публікується завданням збірки, яке розглядається в 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. Потім запускаються лише ті засоби репортажу, які ви явно зареєструєте, що скорочує час виконання для дуже великих наборів.

Підсумуйте цей пост за допомогою: