Size: a a a

2020 June 03

МС

Миша Сидельников... in Allure Framework
Vlad Filin
Вопрос - нужно парсить аллюр-репорт для того, чтоб доставать из результатов нужную информацию.
Хотел сделать это как extension для junit5 в случае onTestFailed.

Но мне нужно каким-то образом доставать uuid теста (если все верно понимаю), чтоб потом сделать следующее:

`TestResult testResult = new AllureStorage().getTestResult(currentTestId)
               .orElseThrow(() -> new NullPointerException("Something went wrong, no test-results found."));`

сперва подумал что достану ее вот так:
Allure.getLifecycle().getCurrentTestCase() но выходит так что это не uuid, а displayName

Версия 2.12.1

Подскажите плз - что делаю не так, и что нужно сделать чтоб выдернуть айдишку теста ?
Заранее всем большое спасибо, очень важный пункт для меня(
никогда так не делайте - new NullPointerException("Something went wrong, no test-results found."))  🙂 даже если очень хочется 🙂
источник

VF

Vlad Filin in Allure Framework
Миша Сидельников
никогда так не делайте - new NullPointerException("Something went wrong, no test-results found."))  🙂 даже если очень хочется 🙂
Что можете порекомендовать взамен ?
источник

DT

Dmitrii Tuchs in Allure Framework
Не делать так - NPE относится к RuntimeException и его не надо выбрасывать своими собственными руками. Как и отлавливать😀
источник

МС

Миша Сидельников... in Allure Framework
NPE это эксепшн, который выбрасывается если идет работа с объектом, который null. И не стоит его использовать самому

сделайте какой-то свой эксепшн, его можно отнаследовать и от runtime
или используйте существующие, а-ля IllegalStateException
источник

DT

Dmitrii Tuchs in Allure Framework
Я так и не понял, что конкретно надо достать из аллюра, вот эту постановку задачи "нужно парсить аллюр репорт" вы сами себе поставили? Может быть вам не нужно именно аллюровские потроха парсить? Что надо достать из аллюра, чего нет тупо в AssertionFailedError по которому упал тест ?)
источник

AK

Andrey K in Allure Framework
И почему нельзя слать уведомление в слак средствами CI?
источник
2020 June 04

VF

Vlad Filin in Allure Framework
Andrey K
И почему нельзя слать уведомление в слак средствами CI?
можно, мы так и делаем.
Но там не вся инфа есть которая нужна, и выходит так, что нужную инфу из теста нужно прокидывать каким-то образом шаг из Jenkinsfile в котором мы формируем сообщение для слака.

Не знаю, как это можно сделать иначе, любым советам и пожеланиям буду рад, заранее спасибо
источник

AK

Andrey K in Allure Framework
так а какая информация нужна?
источник

AK

Andrey K in Allure Framework
"Я упаль :(" build #666  недостаточно?
источник

VF

Vlad Filin in Allure Framework
недостаточно
источник

VF

Vlad Filin in Allure Framework
это у нас и так есть
вместе со ссылкой на аллюр-репорт, ссылкой на билд и прочей информацией
источник

VF

Vlad Filin in Allure Framework
информация нужна по самому тесту.
ну то есть у меня в тесте есть ассерт - я сравниваю ожидаемое значение с фактическим, инты.

ожидаемое я сетаю, конкретную цифру.
фактическое - приходит после определенных действий.

И то, и то хочу каким-то образом доставать по факту фейла теста. я бы мог ожидаемое просто вписать, но не хочется всякий раз тыкаться в extension, если вдруг порог этот поменяется.

Поэтому появилась идея доставать все результаты из allure-results/ из json файликов ибо там четко-структурировано в json формате разложен результат тестов по шагам
источник

VF

Vlad Filin in Allure Framework
сам тест - это как heatlh-check, который ранится каждые 30 минут и делает определенные проверки. Заграничным коллегам неудобно лазить в репорт (я очень долго спорил с ними на этот счет, забрать статистику нужную из аллюр-репорта заняло бы 30 секунд, но хрен кто слушал), и они хотят получать уведомления в слаке с конкретной инфой, не открывая репорт, в поисках нужного теста и в поисках зафейленного степа.
источник

DT

Dmitrii Tuchs in Allure Framework
Я еще раз повторяю, почему просто не взять Exception в AfterTestExecutionCallback и не достать оттуда getMessage() ? Зачем тут аллюровский json-ы  со стэпами, если люди сами прямым текстом говорят что им эта информация (о стэпах) лишняя? :)
источник

DT

Dmitrii Tuchs in Allure Framework
к тому как и откуда там в тесте берется expected и actual это вообще не имеет отношения...
источник

VF

Vlad Filin in Allure Framework
потому что мне нужна еще инфа еще и из других шагов, которые могут быть НЕ зафейленными, и которые не войдут в Exception, соответственно.
источник

VF

Vlad Filin in Allure Framework
действие 1 - получить список.
действие 2 - над каждым айтемом из списка сделать действие.
Действие = @Step.
Если хотя бы 1 степ зафейлился, весь тест зафейлился.

Из зафейленного теста мне нужно достать данные по зафейленным степам из действия №2 и данные из действия №1.
Поскольку результат "Действие №1" может быть не зафейленным - он не войдет в Exception(я полагаю?), а он мне тоже нужен.
источник

DT

Dmitrii Tuchs in Allure Framework
я думал что люди делятся на 2 категории, кому нужны шаги и картинки - и они смотрят отчет
и кому достаточно exception и stacktrace - и им достаточно их :)
но тут видимо третья категория 😄
источник

VF

Vlad Filin in Allure Framework
да, здесь особый случай((
Я пытался своих привести к категории №1 - но господа уперлись рогом и им "долго копать" (с) в репорте :(
источник

AK

Andrey K in Allure Framework
Ну пусть сами и пилят этот костыль
источник