Allure serve как использовать


Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
Инфраструктура Selenium-тестов: как создать связную систему Allure-отчётов без Allure-сервера
Как часто вы формируете Allure-отчёты во время проведения автотестов? Наверняка, чтобы отслеживать изменения от отчёта к отчёту, вы также используете Allure-server. А что делать, если нет возможности содержать отдельный сервер для отчетов или он не отвечает всем вашим запросам? Я SDET-специалист SimbirSoft Дмитрий, и в этой статье расскажу о плагине, который мы придумали в качестве альтернативы Allure-server. Он обладает необходимыми возможностями для обработки отчётов и позволит сэкономить бизнесу на стоимости использования сервера.

Возможности Allure
Allure Framework – популярный инструмент формирования отчетности по результатам работы автотестов, упрощающий их анализ. Это гибкий и легкий инструмент, который позволяет всем участникам производственного процесса не только получить сведения о ходе выполнения тестов, но и предоставляет максимум полезной информации из повседневного выполнения автоматизированных тестов.
Но web-отчет, который генерирует Allure, содержит подробную информацию только о последнем прогоне тестов.
В этом случае приходится сохранять все отчеты отдельно. С этим отлично справляется Allure-server — он даже связывает новый отчёт со старыми, добавляя ссылки на графики запусков и в историю тестов.
Мы уже писали статью про Allure-server — это отдельный сервер, который позволяет хранить и генерировать Allure-отчёты.
Бывают ситуации, когда держать отдельный сервер для отчётов нет возможности, но есть необходимость хранить полную историю отчётов и иметь возможность связывать их, как это делают Allure-server и jenkins plugin. Такая возможность есть, но она плохо задокументирована.
Анализ существующих решений
Анализируя файлы связанных отчётов Allure-server, мы заметили, что ссылка на предыдущий отчёт сохраняется в файлах .json (в отчётах присутствует множество графиков, в каждом из них есть этот параметр) в свойстве reportUrl, например:

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

Решение
На одном из наших проектов была задача хранить подробную историю отчётов и раздавать её через nginx.
Для выполнения этой задачи мы изучили и перепробовали несколько уже существующих плагинов, но ни один нам не подошёл. В результаты мы приняли решение написать свой плагин для Maven, который связывает отчёты, генерируемые плагином Allure Maven.
Расширенную документацию и исходный код проекта можно найти в нашем GitHub.
Как настроить
- Скачайте папку allure-utils-plugin из репозитория.
- Добавьте его в зависимости вашего проекта:
com.simbirsoft allure-utils-plugin 1.0
3. Измените путь отчета allure-maven-plugin:
true io.qameta.allure allure-maven 2.10.0 $/results/last
4. Установите его перед использованием:
mvn -f .\allure-utils-plugin clean install
5. Запустите свои тесты:
mvn test
6. Подготовьте историю:
mvn allure-utils:prepare-history
7. Создайте отчет:
mvn site
8. Удалите старые отчеты:
mvn allure-utils:remove-old
Как публиковать отчёты
- По результатам тестирования создаётся папка allure-results, в которой хранятся .json файлы, необходимые для создания отчётов.
- Запускаем таску (prepare-history) нашего плагина, которая:
a) перемещает папку с последним отчётом в новую папку со случайным названием (/results/last) -> (/results/aaa13438-8f79-4367-a8d1-e08b9cc7c11d);
b) изменяет в /results/aaa13438-8f79-4367-a8d1-e08b9cc7c11d/history) файлы, указанные ниже, добавляя к ним информацию, что текущий отчёт теперь доступен по адресу (../aaa13438-8f79-4367-a8d1- e08b9cc7c11d) — history-trend.json — history.json — categories-trend.json — duration-trend.json — retry-trend.json;
с) копирует (/results/aaa13438-8f79-4367-a8d1-e08b9cc7c11d/history) в allure-results. - Запускаем генерацию нового отчёта Allure Maven плагином в папку /results/last .
- Запускаем другую таску (remove-old) нашего плагина, которая удаляет старые отчёты, оставляя только последние 20 (это число можно настраивать).
Таким образом, последний отчёт всегда будет доступен в nginx по адресу: /last . Этот плагин очень удобен даже при локальных запусках тестов:
- Запускаем тесты.
- Запускаем плагином подготовку истории.
- Генерируем отчёт.
- Раздаём содержимое папки results, где хранятся отчёты, при помощи любого веб-сервера, для этого удобно использовать Allure cli:
allure open .
python -m http.server
Повторять эти шаги можно сколько угодно раз, главное не забывать очищать папку allure-results перед запуском прогона тестов.
Итоги
Мы создали удобный инструмент, который позволяет публиковать отчёты Allure, сохраняя историю предыдущих запусков и связывая отчёты между собой. Этот плагин удобно использовать как для локальных запусков тестов, так и для публикации отчётов в CI при помощи nginx.
Спасибо за внимание! Полезные материалы о frontend-разработке мы также публикуем в наших соцсетях – ВКонтакте и Telegram.
Отчеты о тестировании в Docker
Работаю над организацией тестирования внутри Docker image. Все работает, тесты запускаются внитри Docker image, на основе последнего кода. Вопрос встал по поводу генерирования тестировочных отчетов. Использую Allue. После окончания тестирования запускаю команду allure generate (находясь в папке где находится папка allure-results). Папка allure-report генерируется внутри контейнера. После этого я копирую эти папки себе на локальную машину, но при открытии файла index.html в allure-report, отчет пустой, видно только саму структуру отчета но содержимого нет. Написано «loading» и ничего не происходит. Проделываю весь процесс заново на локальной машине — все работает, отчет генерируется. В данном случае нужен именно отчет через команду allure generate, а не allure serve, т к эта информация пойдет дальше менеджменту в рассылке. Возможно есть какое-то ограничение как в Docker image генерируется и записывается информация, но я пока понять это не могу, я новичок в этом. Есть ли у кого идеи, мнения, решения как можно это разрешить? Спасибо
Отслеживать
задан 3 апр 2020 в 17:18
79 2 2 серебряных знака 7 7 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Возможно есть какое-то ограничение как в Docker image генерируется и записывается информация, но я пока понять это не могу, я новичок в этом.
Почитать про image / container / volume и понять различие.
Есть ли у кого идеи, мнения, решения как можно это разрешить?
Довольно легко решить с volume .
Запустить allure generate как CMD , подключенной volume:/path/allure-results . После выполнения отчеты лежат в volume, а контейнер удалится после завершения.
docker run -it --rm image -v allure-results:/path/allure-results allure generate
Запускаем снова с volume c вечной командой sh (etc).
ID=$(docker run -it --rm image -v allure-results:/path/allure-results sh)
Копируем нужные файлы на хост или отправляем.
docker cp $ID:/path/allure-results .
Пример: .gitlab-ci publish artifacts
script: - docker-compose -f docker-compose.test.yml run --rm pages - docker-compose -f docker-compose.test.yml up -d pages - docker cp "$_pages_1:/usr/src/app/public" public - docker-compose down -v artifacts: paths: - public
Инфраструктура Selenium-тестов: как создать связную систему Allure-отчётов без Allure-сервера
Как часто вы формируете Allure-отчёты во время проведения автотестов? Наверняка, чтобы отслеживать изменения от отчёта к отчёту, вы также используете Allure-server. А что делать, если нет возможности содержать отдельный сервер для отчетов или он не отвечает всем вашим запросам? Я SDET-специалист SimbirSoft Дмитрий, и в этой статье расскажу о плагине, который мы придумали в качестве альтернативы Allure-server. Он обладает необходимыми возможностями для обработки отчётов и позволит сэкономить бизнесу на стоимости использования сервера.

Возможности Allure
Allure Framework – популярный инструмент формирования отчетности по результатам работы автотестов, упрощающий их анализ. Это гибкий и легкий инструмент, который позволяет всем участникам производственного процесса не только получить сведения о ходе выполнения тестов, но и предоставляет максимум полезной информации из повседневного выполнения автоматизированных тестов.
Но web-отчет, который генерирует Allure, содержит подробную информацию только о последнем прогоне тестов.
В этом случае приходится сохранять все отчеты отдельно. С этим отлично справляется Allure-server — он даже связывает новый отчёт со старыми, добавляя ссылки на графики запусков и в историю тестов.
Мы уже писали статью про Allure-server — это отдельный сервер, который позволяет хранить и генерировать Allure-отчёты.
Бывают ситуации, когда держать отдельный сервер для отчётов нет возможности, но есть необходимость хранить полную историю отчётов и иметь возможность связывать их, как это делают Allure-server и jenkins plugin. Такая возможность есть, но она плохо задокументирована.
Анализ существующих решений
Анализируя файлы связанных отчётов Allure-server, мы заметили, что ссылка на предыдущий отчёт сохраняется в файлах .json (в отчётах присутствует множество графиков, в каждом из них есть этот параметр) в свойстве reportUrl, например:

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

Решение
На одном из наших проектов была задача хранить подробную историю отчётов и раздавать её через nginx.
Для выполнения этой задачи мы изучили и перепробовали несколько уже существующих плагинов, но ни один нам не подошёл. В результаты мы приняли решение написать свой плагин для Maven, который связывает отчёты, генерируемые плагином Allure Maven.
Расширенную документацию и исходный код проекта можно найти в нашем GitHub.
Как настроить
- Скачайте папку allure-utils-plugin из репозитория.
- Добавьте его в зависимости вашего проекта:
com.simbirsoft allure-utils-plugin 1.0
3. Измените путь отчета allure-maven-plugin:
true io.qameta.allure allure-maven 2.10.0 $/results/last
4. Установите его перед использованием:
mvn -f .\allure-utils-plugin clean install
5. Запустите свои тесты:
mvn test
6. Подготовьте историю:
mvn allure-utils:prepare-history
7. Создайте отчет:
mvn site
8. Удалите старые отчеты:
mvn allure-utils:remove-old
Как публиковать отчёты
- По результатам тестирования создаётся папка allure-results, в которой хранятся .json файлы, необходимые для создания отчётов.
- Запускаем таску (prepare-history) нашего плагина, которая:
a) перемещает папку с последним отчётом в новую папку со случайным названием (/results/last) -> (/results/aaa13438-8f79-4367-a8d1-e08b9cc7c11d);
b) изменяет в /results/aaa13438-8f79-4367-a8d1-e08b9cc7c11d/history) файлы, указанные ниже, добавляя к ним информацию, что текущий отчёт теперь доступен по адресу (../aaa13438-8f79-4367-a8d1- e08b9cc7c11d) — history-trend.json — history.json — categories-trend.json — duration-trend.json — retry-trend.json;
с) копирует (/results/aaa13438-8f79-4367-a8d1-e08b9cc7c11d/history) в allure-results. - Запускаем генерацию нового отчёта Allure Maven плагином в папку /results/last .
- Запускаем другую таску (remove-old) нашего плагина, которая удаляет старые отчёты, оставляя только последние 20 (это число можно настраивать).
Таким образом, последний отчёт всегда будет доступен в nginx по адресу: /last . Этот плагин очень удобен даже при локальных запусках тестов:
- Запускаем тесты.
- Запускаем плагином подготовку истории.
- Генерируем отчёт.
- Раздаём содержимое папки results, где хранятся отчёты, при помощи любого веб-сервера, для этого удобно использовать Allure cli:
allure open .
python -m http.server
Повторять эти шаги можно сколько угодно раз, главное не забывать очищать папку allure-results перед запуском прогона тестов.
Итоги
Мы создали удобный инструмент, который позволяет публиковать отчёты Allure, сохраняя историю предыдущих запусков и связывая отчёты между собой. Этот плагин удобно использовать как для локальных запусков тестов, так и для публикации отчётов в CI при помощи nginx.
Спасибо за внимание! Полезные материалы о frontend-разработке мы также публикуем в наших соцсетях – ВКонтакте и Telegram.
- Блог компании SimbirSoft
- Тестирование IT-систем
- Программирование
- Java
- Тестирование веб-сервисов
