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. TestNG При каждом запуске программа записывает несколько артефактов, и каждый из них отвечает на разный вопрос.

Файл или папка Что в нём содержится Когда это полезно
index.html Отчет о результатах поиска, содержащий ссылки на разделы с результатами, группами, временем и выходными данными от репортера. Детальный анализ одного из запусков.
emailable-report.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.

Аналогично, результат для класса 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(String s);
  2. Reporter.log(String s, Boolean logToStandardOut);
  3. Reporter.log(String s, уровень int);
  4. Reporter.log(String s, уровень int, логическое значение logToStandardOut);

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

Пример:

Создайте два класса, например DemoA и DemoB, и напишите внутри них следующий код.

Для класса DemoA;

  • Code Для DemoA это уже объяснено выше. Здесь вы используете log метода класса Reporter. (Для реализации собственного класса для создания отчетов, класс должен реализовывать интерфейс org.testng.IReporter.)
  • Метод log — это статический метод класса Reporter. Итак, вы получаете доступ к этому методу через класс Reporter.
  • Метод log используется для хранения информации журнала, записываемой внутри программы. Просматривая информацию журнала, вы легко узнаете, где именно остановлено выполнение программы.

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

Сообщения Reporter.log, написанные внутри тестового класса DemoA.

Для класса DemoB:

Сообщения Reporter.log, написанные внутри тестового класса DemoB.

  • Теперь создайте файл testng.xml, выбрав эти два класса и
  • Выберите запуск как и
  • Нажмите «Преобразовать в testng».
  • Затем запустите этот файл testng.xml, выбрав «Запустить от имени» и выберите пакет testng.
  • Затем обновите проект, откройте папку тестовых результатов.
  1. В папке результатов теста откройте файл emailable-report.html. Это будет выглядеть так:

    Отчет, который можно отправить по электронной почте, формируется после запуска тестовых наборов testng.xml DemoA и DemoB.

    Аналогично, у вас также будет результат для проекта Demo B.

  2. В папке test-output откройте файл index.html. Он будет выглядеть примерно так:

    Отчет index.html создается после выполнения набора тестов testng.xml.

Нажмите на вывод репортера. Он откроет информацию о журнале, написанную в методах тестирования.

TestNG В окне вывода отчета отображается список сообщений, зарегистрированных тестовыми методами.

Нажмите на «Таймс». Он покажет, сколько времени потребовалось для запуска тестового метода, присутствующего в классе, с использованием TestNG инструменты отчетности.

TestNG Временной интервал показывает, сколько времени потребовалось для выполнения каждого метода тестирования.

Как настроить TestNG Отчеты с использованием ITestListener и IReporter

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

  • ITestListener Получайте уведомления в режиме реального времени о начале, успешном прохождении, неудаче или пропуске каждого теста. Используйте эту функцию, когда необходимо зафиксировать информацию в момент события — например, сделать снимок экрана при неудаче.
  • Репортер Получает уведомление один раз, после завершения каждого набора тестов, и объекты, описывающие весь процесс. Используйте его, когда результатом является готовый документ, например, 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 Default Reports vs ExtentReports vs Allure

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

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

Начните с отчетов по умолчанию, пока набор отчетов невелик. Затем перейдите к следующему этапу. ЭкстентОтчеты когда заинтересованные стороны запрашивают понятные панели мониторинга, и для Отчет о соблазнении Когда вопрос о нестабильной истории тестирования в разных сборках становится действительно важным. Какой бы вариант вы ни выбрали, отчет обычно публикуется заданием сборки, что описано в соответствующем разделе. Jenkins непрерывная интеграция учебное пособие.

Часто задаваемые вопросы (FAQ)

Папка появляется только после TestNG После завершения выполнения проект обновляется в IDE. Пустая папка обычно означает, что класс был запущен как обычный файл конфигурации. Java либо приложение, либо обработчики событий по умолчанию были отключены, поэтому репортер так и не запустился.

Да. TestNG По умолчанию запись осуществляется в тестовый каталог. Передайте параметр -d в командной строке или укажите выходной каталог в конфигурации запуска IDE или в настройках Maven Surefire, запускающих тестовый набор.

Сохраните изображение в методе-слушателе, например, в методе onTestFailure, сохраните файл рядом с отчетом, а затем добавьте HTML-тег изображения через Reporter.log. Отчет отобразит разметку, и изображение появится рядом с неудачным методом.

TestNG Сам по себе он не отправляет почту. Команды обычно прикрепляют файл emailable-report.html из задания сборки, например. Jenkins Добавьте этап отправки электронного письма после сборки или небольшую процедуру отправки почты в реализацию IReporter.

Модели ИИ группируют сбои по стеку.tracНеобходимо выявлять сходства, отличать подлинные дефекты от сбоев, связанных с окружающей средой или временем выполнения, и определять, какие из неисправных методов следует проверять в первую очередь. Длинный список отчетов, которые можно отправить по электронной почте, превращается в короткую, приоритетную очередь для команды.

Второй пилот GitHub Можно создавать классы слушателей, записи в Reporter.log и элементы в testng.xml на основе короткого комментария. RevПросматривайте каждое предложение, потому что сгенерированные обработчики событий часто упускают из виду точные методы интерфейса. TestNG надеется.

После подключения IRetryAnalyzer каждая повторная попытка записывается вместе с конечным результатом. Таким образом, в отчете по умолчанию отображаются все попытки, поэтому нестабильный тест может отображаться как неудачный, так и успешный в одном и том же запуске.

Передайте параметр `-usedefaultlisteners` в командной строке или установите `useDefaultListeners` в значение `false` в конфигурации Maven Surefire или Ant. В этом случае будут запускаться только те репортеры, которые вы явно зарегистрировали, что сократит время выполнения для очень больших наборов тестов.

Подведем итог этой публикации следующим образом: