Генерация и открытие Allure отчета из gradle

Коллеги, добрый день. Пытаюсь по примеру настроить, генерацию отчета Allure из build.gradle. Собственно вот пример. Сталкиваюсь вот с такой ошибкой

←[0;33mWARN: ←[mNo current version specified. Use `allure switch <version>` to select version of the report.

Собственно говоря, switch тоже не помогает. Вот ее вывод

←[0;31mERROR: ←[mCould not switch to version "1.4.17": the version is not installed.%nThe installed versions: [].

Но насколько я понимаю, allure-cli и не требует какой то особенной установки. Или все таки требует
Версия CLI 2.4, версия отчета 1.4.17

Та же самая проблема! Allure Cli 2.4, 1.4.17 отчет

Allure Cli качает все нуджные файлы из интернета, Соответственно вы либо версию неправильно задаете, либо покажите пример команды которую вы лично выполняете

allure report generate -v 1.4.17 -o build/reports - исполняется из папки с сгенериной xml

Пишет:

WARN: No current version specified. Use `allure switch <version>` to select version of the report.

у меня версия allure 2.1 и версия отчета 1.4.15 Выполняю allure generate -v 1.4.15 все работает четко. А switch этот пробовали вызывать?

Да - в старте

Возможно @vania_pooh cможет помочь

Дык если ниодной версии не установлено, то нужно установить. Гугл в помощь

Привет,

Там в последних версиях сделано существенное изменение - введено понятие бандлов. Проблема, с которой мы столкнулись, когда CLI всегда скачивал зависимости - это то, что у многих пользователей (в особенности из Индии :slight_smile: ) либо нет постоянного подключения к Интернету, либо оно идет через прокси. Это создает множество проблем. Теперь это работает так:

  1. То, что раньше скачивалось автоматически теперь называется bundle (это вроде бы просто jar или zip, я не помню точно). На каждую версию отчета - свой bundle, содержащий логику генерации отчета.
  2. Нужно явно вызвать команду для установки бандла для каждой нужно версии. В простейшем случае это делается командой: $ allure upgrade. Эта команда сама скачивает бандл с Интернета. Если у вас нет Интернета, то бандл нужно положить руками в определенную папку в домашнем каталоге (поизучайте ~/.allure/).
  3. Если в системе есть несколько бандлов, то можно переключаться между ними, чтобы команда $ allure generate по-умолчанию (без флага -v) использовала текущий выбранный бандл. Это делается командой $ allure switch.

В итоге решение такое - сделать $ allure upgrade, а потом $ allure generate.

3 лайка

Ну эта ошибка ушла, это уже хорошо - теперь появилась другая

Exception in thread "main" ru.yandex.qatools.allure.data.ReportGenerationExcepti
on: Could not find any allure results
        at ru.yandex.qatools.allure.data.AllureReportGenerator.generate(AllureRe
portGenerator.java:58)
        at ru.yandex.qatools.allure.data.AllureReportGenerator.generate(AllureRe
portGenerator.java:53)
        at ru.yandex.qatools.allure.AllureMain.main(AllureMain.java:48)
←[0;31mERROR: ←[mCommand aborted due to exception org.apache.commons.exec.Execut
eException: Process exited with an error: 1 (Exit value: 1).

Пробовал в разных сочетаниях…сама xml есть…Но тут уже боюсь даже Ваня, не поможет. А у вас сработало @heartwilltell

Таже фигня :slight_smile:

Судя по xml, версия тянется правильная

ns2:test-suite start="1440756132896" stop="1440756149538" version="1.4.17" xmlns:ns2="urn:model.allure.qatools.yandex.ru">

я забил и даунгрейднулся на 2.3

Работает с ним?

Решил проблему и с 2.4
Достаточно было сделать allure upgrade - он подкачает бандл.
У меня проблема возникала в том что я выполняю команду прямо из папки где лежит xml, а ее выполнять нужно из каталога где лежит папка с xml указав к ней путь

cd /путь к вашему проекту/build
allure report generate allure-results -o reports/allure-report

1 лайк

Да с 2.4 мне тоже upgrade помог, а там получается, что то с путями у меня тоже - сейчас поэкспериментирую

То есть allure-cli должен лежать в папке /build? Я правильно понял?

Тоже заработало. Можно закрыть тему.

нет, allure cli у вас может лежать где угодно, unix way конечно это куда-то в /opt положить и сделать софт линк бинарника в /usr/bin

Это всего лишь вызов утилиты которая генерит отчет из xml

После прохождения тестов, ваш алюр адаптор должен генерить вам xml файлик, который эта утилита и превращает в отчет.

То куда этот xml у вас генерится зависит от того как вы настроили свой build.gradle

должен выглядить примерно так:

plugins {
    id "java"
}

group 'com.project'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

configurations {
    agent
}

ext { 
     aspectjVersion="1.8.6"
     allureVersion="1.4.17"
}

dependencies {
     ... Ваши зависимости
    compile "ru.yandex.qatools.allure:allure-report-data:${allureVersion}"
    compile "ru.yandex.qatools.allure:allure-testng-adaptor:${allureVersion}"
    agent   "org.aspectj:aspectjweaver:${aspectjVersion}"
}

test.doFirst {
    jvmArgs "-javaagent:${configurations.agent.singleFile}"
}

test {
    useTestNG() {
        suiteXmlFiles << new File(rootDir, "testng.xml")
    }
    systemProperties = System.properties
}

и в src/test/resources нужно положить файл allure.properties с содержанием:
allure.results.directory=build/allure-results

Путь указывайте какой вам нужен

Потом после тестов, как получите xml

cd /путь к вашему проекту/build
allure report generate allure-results -o reports/allure-report

Да нет - из консоли и у меня заработало. Я хочу что бы Gradle сам генерил и открывал отчет (для мануальщиков)
но пока

task generateAllureReport(type: Exec) {
    commandLine "allure-cli\\bin\\allure report generate build\\allure-results -o build\\reports\\allure"
}
test.finalizedBy(generateAllureReport)

task openAllureReport(type: Exec) {
    commandLine "allure report open -o build\\reports\\allure"
}

:generateAllureReport FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':generateAllureReport'.
> A problem occurred starting process 'command 'allure-cli\bin\allure report gen
erate build\allure-results -o build\reports\allure''