Найти тему

Allure или как добавить данные из консоли в отчёт Allure?

Оглавление

Allure предоставляет удобный отчёт по вашим тестам. Используя несложные аннотации, вы можете обогатить свой отчёт большим количеством полезных сведений. Я уже писал об этом в предыдущих статьях.

Сегодня же поговорим, как можно добавить файл, в котором будет вся информация, которая попала в ваш терминал.

Весь лог со всех тестов

Когда вы запускаете тесты, они автоматически логируются. Это означает, что Java отображает информацию о том, что она делает. На определённых этапах тестов вы можете добавлять необходимую информацию. Это позволит вам быстро определить, где возникла проблема.

Поскольку логирование всех тестов представляет собой объёмный документ, в котором сложно ориентироваться, мы создадим отдельный лог для каждого теста.

Печать в консоль воспроизводится с помощью команды

System.out.println("Просто текст в консоль");

Данную строку можно помещать, в любой этап вашего теста, меняя соответственно текст.

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

-2

Иногда недостаточно информативности по вашему тесту. Данный способ просто добавит файл в ваш отчёт Allure.

В консоль попадает следующая информация:

-3

Отчёт Allure не содержит информации, поскольку мы не применяли методы и другие данные. Тест сам по себе довольно прост, но иногда бывает полезно иметь подробные сведения о последовательности действий.

-4

Поэтому давайте данную информацию ин консоли добавим в наш отчёт.

Добавляем файл

Для начала добавим в наш абстрактный класс, от которого наследуется наш тест, пару методов и одну публичную переменную:

public static ByteArrayOutputStream buffer;
@Attachment
public static byte[] LogConsole (String name) throws IOException {
return Files.readAllBytes(Paths.get("src/test/resources", name));
}

@Step("Запись данных из консоли в файл")
public void terminal () {
buffer = new ByteArrayOutputStream();
OutputStream teeStream = new TeeOutputStream(System.out, buffer);
// После этой строки любой вывод будет сохраняться в buffer
System.setOut(new PrintStream(teeStream));
}
-5
  • @Attachement - это один из способов создавать дополнительные данные в отчёте Allure
  • LogConsole - название нашего файла, в нём будет весь лог по тесту
  • Paths.get("src/test/resources" - путь, где будет лежать файл (можете выбрать свой)
  • name - имя файла
  • terminal - метод, который принимает всё, что попадает в консоль.

Далее мы используем данный метод перед каждым тестом, то есть помещаем в котором инициализируются все данные перед тестами.

-6

Далее переходим в методы, которые у нас запускаются после успешного/провального теста. И добавляем в них следующий код

// Сохраняем buffer в файл
try(OutputStream fileStream = new FileOutputStream("src/test/resources/console.txt")) {
Abstract.buffer.writeTo(fileStream);
} catch (IOException e) {
throw new RuntimeException(e);
}
Abstract.LogConsole("console.txt");
  • То есть созданный поток, который мы открыли в начале buffer мы записываем в файл.
  • Abstract.LogConsole("console.txt"); - создаём этот файл в нашем отчёте
-7

На выходе получаем файл в нашем отчёте

-8

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

GitHub - Timurchik57/JAVA

Без интегрирования в проект, данный способ выглядит следующим образом

public static void main(String[] args) throws IOException {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
OutputStream teeStream = new TeeOutputStream(System.out, buffer);

// После этой строки любой вывод будет сохраняться в buffer System.setOut(new PrintStream(teeStream));

// Выводим в консоль строку
System.out.println("Hello World!");

// Сохраняем buffer в файл
try(OutputStream fileStream = new FileOutputStream("console.txt")) {
buffer.writeTo(fileStream);
}
// В console.txt теперь строка "Hello World!"
}

Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!

Обучение тестированию