При генерации отчёта в Allure появляется ошибка

Здравствуйте!

Возникает ошибка при генерации отчётов. Использую pytest (v.3.2.2), allure commandline (v.2.3.5), python (v.3.6.2) и pytest allure adapter (установил с помощью pip install pytest-allure-adaptor). Здесь pytest-allure-adaptor · PyPI написано, что плагин поддерживает только Allure 1.4.x версии - имеется в виду версия commandline? Я пробовал ставить 1.4, но ошибка всё равно возникает. Последовательность действий такая:

  1. установил commandline, adaptor;
  2. запустил py.test test.py --alluredir D:\project\report;
  3. тесты прогнались, в директории появилась новая папка “report”, в ней есть .xml-файл;
  4. запускаю allure generate D:\project\report -o D:\project или allure serve D:\project\report и т.д. - получаю ошибку:
========================= 9 passed in 128.02 seconds ==========================

Generating report to temp directory...
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBEx
ception
        at io.qameta.allure.allure1.Allure1Plugin.xmlFiles(Allure1Plugin.java:39
3)
        at io.qameta.allure.allure1.Allure1Plugin.getStreamOfAllure1Results(Allu
re1Plugin.java:388)
        at io.qameta.allure.allure1.Allure1Plugin.readResults(Allure1Plugin.java
:103)
        at io.qameta.allure.ReportGenerator.lambda$readResults$0(ReportGenerator
.java:32)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1378)
        at io.qameta.allure.ReportGenerator.readResults(ReportGenerator.java:32)

        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipe
line.java:195)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipe
line.java:177)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(A
rrayList.java:1492)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline
.java:484)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractP
ipeline.java:474)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Redu
ceOps.java:913)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline
.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipelin
e.java:511)
        at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:54)
        at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:43)
        at io.qameta.allure.Commands.generate(Commands.java:88)
        at io.qameta.allure.Commands.serve(Commands.java:112)
        at io.qameta.allure.CommandLine.run(CommandLine.java:136)
        at java.base/java.util.Optional.orElseGet(Optional.java:361)
        at io.qameta.allure.CommandLine.main(CommandLine.java:72)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinCla
ssLoader.java:582)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(C
lassLoaders.java:185)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
        ... 21 more

Подскажите, пожалуйста, в чём проблема. Заранее спасибо!

UPD: Установлен Java JDK-9, путь к нему указан в переменной окружения - всё, как указано в документации.

allure generate вы из директории allure-commandline\bin запускаете?
Попробуйте добавить в команду allure generate D:\project\report -o D:\project –clean

1 лайк

Видимо, ошибка была в том, что запускал generate из той же директории, где и проект. Хотя, в переменную окружения PATH ведь добавлено было - это настолько принципиально? В любом случае, большое спасибо, Ильдар!

У меня похожая проблема, но не совсем. Есть тест на Java, с применением Allure.При генерации отчета(вводе команды allure serve target/allure-results в Терминал Intellij IDEA) вываливается ошибка:ERROR: JAVA_HOME is set to an invalid directory: C:\Java\jdk1.8.0_152\bin

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

Но если у меня действительно, там стоит Java и в системной переменной стоит : C:\Java\jdk1.8.0_152
привязку к bin убрала а все равно ошибка идет???

Я конечно могу ошибаться, но разве надо указывать /bin?
https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/

Да, не нужно. Но мне помогло вот эта строка: C:\Java\jdk1.8.0_152\jre вставила в JAVA_HOME.

Теперь почему то отчет генерится пустой. Если я запускаю в IDEA, то отчет генерится и в браузере открывается. А вот если собираю в Jenkins, то отчет пустой. Что нужно сделать для генерации отчета, какие настройки в Job прописать??

Вам надо указать, где лежит папка allure-results. Если вы используете джобу - то в самой джобе, в пост шагах.

Если через пайплайн, то собсна в нём в стэйдже тестирования

Так, если джоба:

Пайплайн:

 post {
                always {
                    allure includeProperties: false, jdk: '', results: [[path: 'allure-results']]
                }

Я так и сделала

Это путь к папке в директории проекта.

Ну а посмотрите, где лежит эта папка в воркспейсе Дженкинса

Может нужно путь к workspace в Jenkins указать, для конкретной джобы??

А нужно какую папку смотреть job или workspace??

Если на агенте запускаются тесты - то в workspace, если на мастере - то вроде в job, но я уже не помню. В общем там будет папка с названием вашей джобы

Ну и вообще, вы даже не написали, какая ошибка в конце лога джобы?
Там должно быть написано где искались результаты и результат поиска

Вот вывод в консоль: Вывод на консоль

Started by user Ibraimova Viktoriya Building in workspace E:\JAVA_MAIN\forJenkins\workspace\TestJobSelenoid Parsing POMs Established TCP socket on 51150 [ExampleWithSelenoidAndJenkins2] $ /bin/java -cp E:\JAVA_MAIN\forJenkins\plugins\maven-plugin\WEB-INF\lib\maven35-agent-1.12-alpha-1.jar;E:\JAVA_MAIN\Maven\apache-maven-3.5.2\boot\plexus-classworlds-2.5.2.jar;E:\JAVA_MAIN\Maven\apache-maven-3.5.2/conf/logging jenkins.maven3.agent.Maven35Main E:\JAVA_MAIN\Maven\apache-maven-3.5.2 E:\JAVA_MAIN\forJenkins\war\WEB-INF\lib\remoting-3.26.jar E:\JAVA_MAIN\forJenkins\plugins\maven-plugin\WEB-INF\lib\maven35-interceptor-1.12-alpha-1.jar E:\JAVA_MAIN\forJenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-commons-1.12-alpha-1.jar 51150 ERROR: Не удалось прочитать POM файлы java.io.IOException: Cannot run program “/bin/java” (in directory “F:\IdeaProjects\OTUS\Temp\MariaOskar\TempRaznoe\allure\ExampleWithSelenoidAndJenkins2”): CreateProcess error=2, Не удается найти указанный файл at java.lang.ProcessBuilder.start(Unknown Source) at hudson.Proc$LocalProc.<init>(Proc.java:249) at hudson.Proc$LocalProc.<init>(Proc.java:218) at hudson.Launcher$LocalLauncher.launch(Launcher.java:935) at hudson.Launcher$ProcStarter.start(Launcher.java:454) at hudson.maven.AbstractMavenProcessFactory.newProcess(AbstractMavenProcessFactory.java:278) at hudson.maven.ProcessCache.get(ProcessCache.java:236) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:804) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504) at hudson.model.Run.execute(Run.java:1815) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: java.io.IOException: CreateProcess error=2, Не удается найти указанный файл at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.<init>(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) … 13 more [TestJobSelenoid] $ E:\JAVA_MAIN\forJenkins\tools\ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation\clean_test\bin\allure.bat generate -c -o E:\JAVA_MAIN\forJenkins\workspace\TestJobSelenoid\allure-report allure-results does not exists Report successfully generated to E:\JAVA_MAIN\forJenkins\workspace\TestJobSelenoid\allure-report Allure report was successfully generated. Creating artifact for the build. Artifact was added to the build. Finished: FAILURE

E:\JAVA_MAIN\forJenkins\workspace\TestJobSelenoid\allure-report allure-results does not exists

Полагаю, вам надо указать там папку так:

allure-results

Но для начала посмотреть, что allure-results лежит в корне проекта. Если нет - то ищите папку, где оно лежит - её и пишите туда.

Я так делала. Еще раз сделала, убрала target: Started by user Ibraimova Viktoriya Building in workspace E:\JAVA_MAIN\forJenkins\workspace\TestJobSelenoid Parsing POMs Established TCP socket on 51448 [ExampleWithSelenoidAndJenkins2] $ /bin/java -cp E:\JAVA_MAIN\forJenkins\plugins\maven-plugin\WEB-INF\lib\maven35-agent-1.12-alpha-1.jar;E:\JAVA_MAIN\Maven\apache-maven-3.5.2\boot\plexus-classworlds-2.5.2.jar;E:\JAVA_MAIN\Maven\apache-maven-3.5.2/conf/logging jenkins.maven3.agent.Maven35Main E:\JAVA_MAIN\Maven\apache-maven-3.5.2 E:\JAVA_MAIN\forJenkins\war\WEB-INF\lib\remoting-3.26.jar E:\JAVA_MAIN\forJenkins\plugins\maven-plugin\WEB-INF\lib\maven35-interceptor-1.12-alpha-1.jar E:\JAVA_MAIN\forJenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-commons-1.12-alpha-1.jar 51448 ERROR: Не удалось прочитать POM файлы java.io.IOException: Cannot run program “/bin/java” (in directory “F:\IdeaProjects\OTUS\Temp\MariaOskar\TempRaznoe\allure\ExampleWithSelenoidAndJenkins2”): CreateProcess error=2, Не удается найти указанный файл at java.lang.ProcessBuilder.start(Unknown Source) at hudson.Proc$LocalProc.<init>(Proc.java:249) at hudson.Proc$LocalProc.<init>(Proc.java:218) at hudson.Launcher$LocalLauncher.launch(Launcher.java:935) at hudson.Launcher$ProcStarter.start(Launcher.java:454) at hudson.maven.AbstractMavenProcessFactory.newProcess(AbstractMavenProcessFactory.java:278) at hudson.maven.ProcessCache.get(ProcessCache.java:236) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:804) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504) at hudson.model.Run.execute(Run.java:1815) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: java.io.IOException: CreateProcess error=2, Не удается найти указанный файл at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.<init>(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) … 13 more [TestJobSelenoid] $ E:\JAVA_MAIN\forJenkins\tools\ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation\clean_test\bin\allure.bat generate -c -o E:\JAVA_MAIN\forJenkins\workspace\TestJobSelenoid\allure-report allure-results does not exists Report successfully generated to E:\JAVA_MAIN\forJenkins\workspace\TestJobSelenoid\allure-report Allure report was successfully generated. Creating artifact for the build. Artifact was added to the build. Finished: FAILURE

Я же вам написал, найдите папку allure-results внутри этой E:\JAVA_MAIN\forJenkins\workspace\TestJobSelenoid\

Внутри E:\JAVA_MAIN\forJenkins\workspace\TestJobSelenoid\ есть только allure-report