Код возврата runner для Jenkins


#1

Для вызова тестов из Jenkins использую шаг bat со следующим текстом:
runner vanessa --path c:\buhcorp30\features --ibconnection /S*** --db-user *** --db-pwd *** --v8version 8.3.12 --settings c:\buhcorp30\vrunner.json --debuglogfile c:\buhcorp30\stage4log.txt

Даже в случае прохождения тестов с ошибками возвращаемый runner код видимо равен 0, так как Jenkins рапортует об успешно выполненном шаге. Как мне в случае ошибок в тестировании возвращать код, отличный от нуля, чтобы видеть в Jenkins ошибки.


#2

так не должно быть. Если тестирование завершается с ошибкой джоба должна падать. Если не ошибаюсь возвращается значение 2
А вообще статус джобы можно определять через currentBuild.result = ‘FAILURE’


#3

Вот лог runner:
c:\PROGRA~2\OneScript\lib\add>runner vanessa --path c:\buhcorp30\features --ibconnection /S*** --db-user *** --db-pwd *** --v8version 8.3.12 --settings c:\buhcorp30\vrunner.json --debuglogfile c:\buhcorp30\stage4log.txt
vanessa-runner v1.7.0
ИНФОРМАЦИЯ - Тестирую поведение с помощью фреймворка ADD
ИНФОРМАЦИЯ - Выполняю команду/действие в режиме 1С:Предприятие
ИНФОРМАЦИЯ - Фича: c:\buhcorp30\features\Движения документа.feature
ИНФОРМАЦИЯ - 0%
ИНФОРМАЦИЯ - Сценарий: Контроль наличия общей команды Движения документа
ИНФОРМАЦИЯ - Шаг: Дано Я открыл новый сеанс TestClient или подключил уже существующий
ИНФОРМАЦИЯ - Шаг: И Я закрыл все окна клиентского приложения
ИНФОРМАЦИЯ - Шаг: И В командном интерфейсе я выбираю ‘Документы’ ‘Использование ОС’
ИНФОРМАЦИЯ - Шаг: Тогда открылось окно ‘Использование ОС’
ИНФОРМАЦИЯ - Шаг: И я нажимаю на кнопку с именем ‘ФормаСоздать’
ИНФОРМАЦИЯ - Шаг: Тогда открылось окно ‘Использование ОС (создание)’
ИНФОРМАЦИЯ - Шаг: И из выпадающего списка “Вид использования” я выбираю точное значение ‘Передача в аренду’
ИНФОРМАЦИЯ - Шаг: И я нажимаю на кнопку ‘Провести’
ИНФОРМАЦИЯ - Шаг: И я нажимаю на кнопку ‘Движения документа’
ИНФОРМАЦИЯ - Шаг: Тогда открылось окно ‘Движения документа: Использование ОС *’
ИНФОРМАЦИЯ - Шаг (Тогда открылось окно ‘Движения документа: Использование ОС *’) не выполнен. Строка дерева №17
ИНФОРМАЦИЯ - Failed: {ВнешняяОбработка.РаботаСИнтерфейсом.Форма.Форма.Форма(1481)}: Окно с заголовком Движения документа: Использование ОС * не найдено.
ИНФОРМАЦИЯ - Технические данные:
ИНФОРМАЦИЯ - ИмяФайла: c:\Program Files (x86)\OneScript\lib\add\features\libraries\UITestRunner\step_definitions\РаботаСИнтерфейсом.epf
ИНФОРМАЦИЯ - ИмяПроцедуры: ОткрылосьОкно
ИНФОРМАЦИЯ - ВерсияVanessaADD: ver 6.0.0
ИНФОРМАЦИЯ - ВерсияПлатформы: 8.3.12.1714
ИНФОРМАЦИЯ - РежимСовместимостиTestManager: НеИспользовать
ИНФОРМАЦИЯ - Файлы отчетов Allure-report записаны в каталог c:\buhcorp30\allurereport\8310UF
ИНФОРМАЦИЯ - Выполнение команды/действия в режиме 1С:Предприятие завершено.
ИНФОРМАЦИЯ - Тестирование поведения завершено

Я в Jenkins не силен, поэтому у меня вопрос - что можно предпринять чтобы отображать в Jenkins результат такого выполнения как ошибка?


#4

Если использовать шаг дженкиста с загрузкой тестов unit или allure, то он сам при наличии ошибок тестирования меняет статус таски.

Если не используете загрзку тестов, тогда как вариант анализировать результат лога тестирования


#5

у меня так

if(ppSettings.autotestBDD) {
	timeout(120) {
		fileUtils.createChildFilePath(rootAllureReport, "bdd", true);
		catchError(buildResult: 'UNSTABLE', stageResult: 'FAILURE') {
			vrunner.bddTest();
		}
	}
}
allure jdk: '', results: [[path:rootAllureReport]]
junit keepLongStdio: true, testResults: '**/*junit.xml'

#6

В настройка vrunner.json есть выгрузка статуса?

"ВыгружатьСтатусВыполненияСценариевВФайл": "Истина",
"ПутьКФайлуДляВыгрузкиСтатусаВыполненияСценариев": "$workspaceRoot/Build/BuildStatus.log",

#7

Да.
“ВыгружатьСтатусВыполненияСценариевВФайл”: “Истина”,
“ПутьКФайлуДляВыгрузкиСтатусаВыполненияСценариев”: “c:/buhcorp30/BuildStatus.log”,

А что дальше делать? Предполагается, что я руками буду статус из этого файла проверять и как-то в Jenkins передавать?


#8

Попробуй поменять путь. Как у меня сделай. Я тоже давно мучился с этим…


#9

Не очень понял. У меня тестирование стартует с помощью шага bat. Генерация отчета выполняется так же (использую pipeline, а не freestyle).


#10

А можно посмотреть на код этой функции?


#11

cmd.run("vrunner vanessa --settings \"${pathCfg('vanessa')}\"", "Сценарное тестирование");


#12

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


#13

vanessa-runner v1.7.0
ИНФОРМАЦИЯ - Тестирую поведение с помощью фреймворка ADD
ИНФОРМАЦИЯ - Выполняю команду/действие в режиме 1С:Предприятие
ИНФОРМАЦИЯ - Выполнение команды/действия в режиме 1С:Предприятие завершено.
ОШИБКА - Ошибка:{Модуль C:\Program Files (x86)\OneScript\lib\vanessa-runner\src\Классы\МенеджерКонфигуратора.os / Ошибка в строке: 175 / Результат работы не равен 0 или 2, а равен Не найден файл статуса c:\Program Files (x86)\OneScript\lib\add\Build\BuildStatus.log}

Стало хуже, видимо я где-то путь не настроил. Но судя по сообщению 2 считается нормальным результатом работы, а именно 2 пишется у меня в BuildStatus.log при наличии ошибок в тестировании.


#14

Вроде никаких откровений, только у меня явный батник, спасибо


#15

Подозрительно что каталог у тебя lib/add.
Секунду, сейчас свой пайплайн выложу… Эту часть по крайней мере


#16

Запуск теста

vrunner vanessa    --settings ./tools/JSON/UI/KeyFeatures/Settings.json

Файл настроек Settings.json

{
    "default":{
        "--ibconnection": "/F./build/DemoBase",
        "--v8version": "8.3",
        "--db-user": "Администратор"
    },
    "vanessa": {
        "--vanessasettings": "./tools/JSON/UI/KeyFeatures/VBParams.json",
        "--command": "noMetriks"
    }

}

Файл VBParams.json

{
	"ИмяСборки": "Key Functions",
	"КаталогФич": "$workspaceRoot/features/01. Scenarios",
	"КаталогПроекта": "$workspaceRoot",
	"КаталогиБиблиотек": [
		"$workspaceRoot/features/00. Lib",
		"$workspaceRoot/features/01. Scenarios/00. Grouping",
		"$instrumentsRoot/features/libraries"
	],
	"ВыполнитьСценарии": "Истина",
	"ЗавершитьРаботуСистемы": "Истина",
	"ВыгружатьСтатусВыполненияСценариевВФайл": "Истина",
	"ПутьКФайлуДляВыгрузкиСтатусаВыполненияСценариев": "$workspaceRoot/Build/BuildStatus.log",
	"ДелатьЛогВыполненияСценариевВТекстовыйФайл": "Истина",
	"ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/Build/log.txt",
	"ДелатьОтчетВФорматеАллюр": "Истина",
	"КаталогOutputAllureБазовый": "$workspaceRoot/Build/Reports/allurereport",
	"ДелатьСкриншотПриВозникновенииОшибки": "Истина",
	"КомандаСделатьСкриншот": '"C:/Program Files (x86)/IrfanView/i_view32.exe" /capture=1 /convert=',
	"КаталогOutputСкриншоты": "$workspaceRoot/Build/Reports/ScreenShots",
	"СоздаватьПодкаталогВКаталогеAllureДляЭтойСборки": "Ложь",
	"ДелатьОтчетВФорматеjUnit": "Истина",
	"КаталогOutputjUnit": "$workspaceRoot/Build/Reports/Unit/KeyFeature",
	"ДобавлятьКИмениСценарияУловияВыгрузки": "Истина",
	"СписокТеговИсключение": [
		"IgnoreOnUITests",
		"Ignore",
		"Issue"
	],
	"СписокТеговОтбор": [
		"KeyFeature"
	]
}


#17

Все то же самое за исключением каталогов. Ну еще я использую runner.bat вместо vrunner.bat. Разница есть?


#18

нет, для совместимости разные имена оставлены


#19

Меня смущает что каталог определяется как lib/add. Можешь jenkinsfile показать?


#20

Вопросы повышенной сложности пошли :slight_smile: Стыдно признаваться, но я такие файлы нахожу только в каталогах OneScript, причем датированы они позапрошлым годом.