TestNG Формування звітів в Selenium: Як генерувати?
⚡ Розумний підсумок
TestNG Звіти – це файли результатів HTML за замовчуванням, які TestNG записує дані в папку test-output після кожного запуску, показуючи, які тестові випадки були пройдені, не пройдені або пропущені, а також будь-які журнали Reporter.
Які 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
- Натисніть опцію “emailable-report.html”
- Натисніть опцію веб-браузер
На скріншоті нижче показано, як файл emailable-report.html відкривається з папки test-output.
Вихідні звіти в TestNG звітування виглядатиме так, як показано нижче, якщо пройдено обидва класи:
Розглянемо сценарій, у якому ви навмисно провалюєте тестовий приклад, тобто клас DemoB. Потім перетворіть обидва класи у файл пакета testng.xml і запустіть його. Тоді результат буде виглядати так. Це покаже невдалі тестові випадки.
Це результат для класу DemoB:
Так само результат для Class DemoA виглядатиме так:
Спосіб 2: index.html
- Клацніть правою кнопкою миші на index.html у каталозі проекту.
- Виберіть параметр відкрити за допомогою веб-браузера. Він відобразить результат у такому порядку.
На скріншоті нижче показано, як файл index.html відкривається з каталогу проекту.
Результат буде виглядати так:
Метод 3: Репортерський клас
Разом з цими TestNG Методи, створені звітами, ви можете використовувати файл object.properties для зберігання журналів, створених системою, а також журналів, створених користувачем. Але одним із найпростіших способів зберігання інформації журналу під час тестування є використання Репортерський клас.
Репортер.увійти Selenium це клас присутній у TestNG та цінності Selenium звітність. Він надає 4 різні методи зберігання інформації журналу:
- Reporter.log(рядок s);
- Reporter.log(String s, Boolean logToStandardOut);
- Reporter.log(String s, int level);
- Reporter.log(String s, int level, Boolean logToStandardOut);
Другий аргумент визначає, чи повідомлення буде відображатися на консолі, а також у звіті, а аргумент level контролює рівень деталізації, з яким зберігається повідомлення.
Приклад:
Створіть два класи, такі як DemoA та DemoB, і напишіть наступний код усередині класів.
Для класу DemoA;
- Команда Code для DemoA вже пояснено вище. Тут ви використовуєте метод журналу класу Reporter. (Для реалізації власного класу звітності, цей клас має реалізувати інтерфейс org.testng.IReporter.)
- Метод журналу є статичним методом класу Reporter. Отже, ви отримуєте доступ до цього методу через клас Reporter.
- Метод журналу використовується для зберігання інформації журналу, яка записується всередині програми. Переглядаючи інформацію журналу, ви легко дізнаєтеся, де саме зупинено виконання програми.
На скріншоті нижче показано виклики Reporter.log, розміщені всередині класу DemoA.
Для класу DemoB:
- Тепер створіть файл testng.xml, вибравши ці два класи та
- Виберіть запустити як і
- Натисніть «Перетворити на testng».
- Потім запустіть цей файл testng.xml, вибравши «Запустити як» і виберіть «Набір testng».
- Потім оновіть проект, відкрийте папку test-output.
- У папці test-output відкрийте emailable-report.html. Це буде виглядати так:
Подібним чином ви також матимете вихід для проекту Demo B.
- У папці test-output відкрийте файл index.html. Він виглядатиме так:
Натисніть вихід репортера. Він відкриє інформацію про журнал, яка б не була написана в методах тестування.
Натисніть на Times. Він покаже, скільки часу знадобилося для запуску тестового методу, наявного в класі 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 безперервна інтеграція навчальний посібник.












