Allure предоставляет удобный отчёт по вашим тестам. Используя несложные аннотации, вы можете обогатить свой отчёт большим количеством полезных сведений. Я уже писал об этом в предыдущих статьях.
Сегодня же поговорим, как можно добавить файл, в котором будет вся информация, которая попала в ваш терминал.
Весь лог со всех тестов
Когда вы запускаете тесты, они автоматически логируются. Это означает, что Java отображает информацию о том, что она делает. На определённых этапах тестов вы можете добавлять необходимую информацию. Это позволит вам быстро определить, где возникла проблема.
Поскольку логирование всех тестов представляет собой объёмный документ, в котором сложно ориентироваться, мы создадим отдельный лог для каждого теста.
Печать в консоль воспроизводится с помощью команды
System.out.println("Просто текст в консоль");
Данную строку можно помещать, в любой этап вашего теста, меняя соответственно текст.
Напишем небольшой тест и добавим различные данные, которые будут добавляться в консоль.
Иногда недостаточно информативности по вашему тесту. Данный способ просто добавит файл в ваш отчёт Allure.
В консоль попадает следующая информация:
Отчёт Allure не содержит информации, поскольку мы не применяли методы и другие данные. Тест сам по себе довольно прост, но иногда бывает полезно иметь подробные сведения о последовательности действий.
Поэтому давайте данную информацию ин консоли добавим в наш отчёт.
Добавляем файл
Для начала добавим в наш абстрактный класс, от которого наследуется наш тест, пару методов и одну публичную переменную:
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));
}
- @Attachement - это один из способов создавать дополнительные данные в отчёте Allure
- LogConsole - название нашего файла, в нём будет весь лог по тесту
- Paths.get("src/test/resources" - путь, где будет лежать файл (можете выбрать свой)
- name - имя файла
- terminal - метод, который принимает всё, что попадает в консоль.
Далее мы используем данный метод перед каждым тестом, то есть помещаем в котором инициализируются все данные перед тестами.
Далее переходим в методы, которые у нас запускаются после успешного/провального теста. И добавляем в них следующий код
// Сохраняем 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"); - создаём этот файл в нашем отчёте
На выходе получаем файл в нашем отчёте
Вы можете ознакомиться с данным проектом и клонировать его себе
Без интегрирования в проект, данный способ выглядит следующим образом
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!"
}
Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!