Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

gradle
allure
Теги: #<Tag:0x00007f7b6450d688> #<Tag:0x00007f7b6450d4a8>

(Александр Шиповалов) #1

Коллеги, добрый день. Пытаюсь по примеру настроить, генерацию отчета 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


(heartwilltell) #2

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


(Sergey Pirogov) #3

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


(heartwilltell) #4

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.

(Sergey Pirogov) #5

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


(Александр Шиповалов) #6

Да - в старте


(Александр Шиповалов) #7

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


(Sergey Pirogov) #8

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


(vania-pooh) #9

Привет,

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

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

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


(Александр Шиповалов) #10

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

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


(heartwilltell) #11

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


(Александр Шиповалов) #12

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

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

(heartwilltell) #13

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


(Александр Шиповалов) #14

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


(heartwilltell) #15

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

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


(Александр Шиповалов) #16

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


(Александр Шиповалов) #17

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


(Александр Шиповалов) #18

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


(heartwilltell) #19

нет, 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


(Александр Шиповалов) #20

Да нет - из консоли и у меня заработало. Я хочу что бы 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''