t.me/atinfo_chat Telegram группа по автоматизации тестирования

Allure, Jenkins и необходимость фейлить джобу с упавшим тестом

Теги: #<Tag:0x00007f9b04d6aed8> #<Tag:0x00007f9b04d6aaf0>

Доброго время суток, коллеги.
Кто сталкивался с необходимостью при фейле тестов в сюите валить и джобу в дженкинсе?
Необходимое условие - полный allure репорт.
При включенной опции в pom.xml <testFailureIgnore>true</testFailureIgnore> отчеты генерятся, но при упавшем тесте джоба не фейлится. При выключенной опции джоба фейлится, но отчет мягко говоря не полный :slight_smile:

1 Симпатия

Блин, точно, а я то думаю, почему у меня билд саксесс для джобы, когда там брокен или фейл в тестах и письмо не приходит на почту. Совсем забыл про эту опцию… Но выходит, что если ее не указать, то тесты упадут на первом же фейле и не дойдут до конца, от чего и отчет будет не полным…

Тоже интересует этот вопрос… :slight_smile:

Нет под рукой точного названия, но есть плагин (для TestNG точно) в котором в том числе есть настройки % упавших тестов. В зависимости от настроек плагин выставит статус билда в FAILED / UNSTABLE / SUCCESS

Вообще я видел несколько плагинов, которые меняют статус билда по тем или иным условиям. Ищите и найдете =)

Не все так просто :slight_smile:
Джоба отчет не то что не генерит вообще, а не генерит частично, причем закономерности я так и не проследил…
В ТестНГ репортах отображаются все пройденные тесты, а в аллюре нет

А можно подробней? Мне не совсем ясно, каким образом может быть неполный отчет, если allure генерит репорты пост-фактум на основании сформированной во время выполнения тестов xml. Если по какой-то причине у вас неполный отчет, значит xml не содержит нужных данных. Возникает логичный вопрос - почему?

Какой unit framework используете? Как отчеты строите - плагином или при помощи top level maven target? Локально такая же картина наблюдается при изменении значения <testFailureIgnore>?

Да так и есть xml не полная получается - другого варианта не вижу.
Использую TestNG
В настройках все делал “по методичке” :slight_smile: для Jenkins с Allure plugin
Локально картина иная - с трех запусков есть все результаты… В Jenkins же не достаточно статистики, но есть мнение что теряется отчет с теста (в TestNG классификации), в котором есть упавший метод…
Для уточнения тесты (6 штук) идут в 4 потока, заданных в соответствующей testng.xml, включают в себя несколько классов, с несколькими тестовыми методами, ну и плюс дополнительное управление группами и приоритетами…

Какие версии testng / allure-testng-adaptor используете? Локально запускаете ведь через clean test -> site? Пробовали запускать на Jenkins через top level maven targets вместо плагина?

Версии прийду на работу гляну.
Локально так. Нет не через плагин не пробовали.

Ну вот попробуйте через jenkins запускать таким же образом, как и локально, - при помощи top level maven target, где собственно и будет указан site goal. Я именно так и делаю, никаких проблем с testng или неполными отчетами не замечал. Возможно какой-то баг с плагином. К тому же, разработчики Allure с testng не работают в принципе. Так что adaptor саппортится силами комьюнити. В новой версии его вообще не будет в core. Теперь адаптор будет частью testng team. Фактически из одного комьюнити его перекинули в другое. Что из этого выйдет - посмотрим. :slight_smile:

Странный подход господ из Яндекса :slight_smile:
А при таком подходе артефакт репорта будет ли виден?
Есть ли темка где такой подход обсуждался?

Репорт будет генериться там, где вы укажите в настройках allure-maven-plugin. Публиковать его можно при помощи html publisher plugin.

По темам: точно уже раньше обсуждались проблемы запуска jenkins plugin vs allure-maven-plugin.

1 Симпатия

Можете пожалуйста кинуть в меня парочкой ссылочек, где что-то подобное можно почитать (на любом языке), не совсем понимаю, как подобное реализовать… У меня тоже через адаптер сделано… Спасибо. :slight_smile:

Да тут и читать ничего не надо. По аналогии с локальной сборкой, clean test выполняется в build секции. А site - в post steps. Все вполне логично.

Репорт публиковать еще “сложнее”:

Причем, это стандартный механизм для абсолютно любого html репорта.
Читать - не перечитать, не так ли? :slight_smile:

3 Симпатий

Пасиб :slight_smile:

И вроде все ясно, но после рана джобы с такими параметрами:

В результате в target не создается папка /site/allure-maven-plugin
Возможно это потому что в pom нет дополнительных настроек?

<plugin>
    <groupId>ru.yandex.qatools.allure</groupId>
    <artifactId>allure-maven-plugin</artifactId>
    <version>${allure.maven.version}</version>
</plugin>

Да кстати хочется добавить что еще одна причина отказа от Allure плагина в том что почему-то репорты прогона тестов в хроме!! перестали показывать полные результаты… в итоге одно на другое наложилось.

А вы точно в workspace проверяли, что ее нет? Может все таки путь неверный? :wink:
Ну и, к слову, кастомный путь к репортам можно сконфигурировать прямо в плагине.

<reporting>
        <excludeDefaults>true</excludeDefaults>
        <plugins>
            <plugin>
                <groupId>ru.yandex.qatools.allure</groupId>
                <artifactId>allure-maven-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <version>1.4.24.RC2</version>
                    <reportDirectory>${project.basedir}/../reports</reportDirectory>
                    <properties>
                        <allure.issues.tracker.pattern>https://url/%s</allure.issues.tracker.pattern>
                        <allure.tests.management.pattern>https://url/%s</allure.tests.management.pattern>
                    </properties>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

В итоге все получилось, когда изменил папку отчета в настройках…

            <plugin>
                <groupId>ru.yandex.qatools.allure</groupId>
                <artifactId>allure-maven-plugin</artifactId>
                <version>${allure.maven.version}</version>
                <configuration>
                    <version>${allure.version}</version>
                    <reportDirectory>${project.build.directory}/reports</reportDirectory>
                </configuration>
            </plugin>

И изменении версии с 1.5.0.RC2 на 1.4.24.RC2 причем что больше повлияло не знаю :slight_smile:

Эта версия мертва. Ее никогда не будет в релизе. На данный момент 1.4.24.RC2 - самая последняя. Причем, после нее будет уже полностью переписанный на Java 8 Allure 2. Скоро должна beta появиться.

Мде…сработало ровно один раз… потом результат такой…

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 51:51 min
[INFO] Finished at: 2016-06-30T08:54:03-07:00
[INFO] Final Memory: 35M/506M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project automation: There are test failures.
[ERROR] 
[ERROR] Please refer to C:\Jenkins\workspace\A-v1-imagenet-T-R-CH\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Build step 'Invoke top-level Maven targets' marked build as failure
[htmlpublisher] Archiving HTML reports...
[htmlpublisher] Archiving at PROJECT level C:\Jenkins\workspace\A-v1-imagenet-T-R-CH\target\reports to /opt/getty/jenkins/jobs/A-v1-imagenet-T-R-CH/htmlreports/Allure_Report
ERROR: Specified HTML directory 'C:\Jenkins\workspace\A-v1-imagenet-T-R-CH\target\reports' does not exist.
Finished: FAILURE

Соответственно и джобы фейлед и скип…
А все потому что при падении любого теста site не происходит…
Как его втулить в постбилд экшн без понятия %)