From df19c8fe64c4cfce73bb05d0bf7c8db29aaa3dff Mon Sep 17 00:00:00 2001 From: Infactum Date: Thu, 24 Jan 2019 09:21:07 +0500 Subject: [PATCH 1/5] =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=86=D0=B5=D0=BF=D1=82?= =?UTF-8?q?=20=D1=84=D0=B8=D1=87=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xddTestRunner/Ext/ObjectModule.bsl | 1 + .../Ext/Form/Module.bsl" | 22 +- ...\265\321\200\321\201\320\270\321\2172.xml" | 101 +++++++++ .../Ext/ObjectModule.bsl" | 212 ++++++++++++++++++ ...0\244\320\276\321\200\320\274\320\260.xml" | 22 ++ .../Ext/Form.xml" | 13 ++ .../Ext/Form/Module.bsl" | 71 ++++++ ...321\205\320\265\320\274\320\260Allure.xml" | 16 ++ .../Ext/Template.txt" | 201 +++++++++++++++++ 9 files changed, 656 insertions(+), 3 deletions(-) create mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172.xml" create mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" create mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260.xml" create mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" create mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" create mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure.xml" create mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure/Ext/Template.txt" diff --git a/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl b/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl index 81f7a59d5..d18e622d0 100644 --- a/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl +++ b/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl @@ -41,6 +41,7 @@ Результат.Вставить("Загрузчик", "Загрузчик"); Результат.Вставить("Утилита", "Утилита"); Результат.Вставить("ГенераторОтчета", "ГенераторОтчета"); + Результат.Вставить("ПотоковыйГенераторОтчета", "ПотоковыйГенераторОтчета"); Возврат Новый ФиксированнаяСтруктура(Результат); КонецФункции diff --git "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 794739837..ad8151ebf 100644 --- "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -538,7 +538,6 @@ ПредставлениеТеста = СтрШаблон_("%1 - <%2>", ПредставлениеТеста, ИмяПользователя()); КонецЕсли; - Возврат ПредставлениеТеста; КонецФункции @@ -608,7 +607,16 @@ КонецФункции &НаКлиенте -Функция ВыполнитьТесты(Знач Загрузчик, Знач КонтейнерДереваТестов, Знач Фильтр = Неопределено, Знач Подписчик = Неопределено) Экспорт +Функция ВыполнитьТесты(Знач Загрузчик, Знач КонтейнерДереваТестов, Знач Фильтр = Неопределено, Знач Подписчик = Неопределено, ИерархияИсполнения = Неопределено) Экспорт + + // Временный код. + // Нужна Универсальная работа с потоковыми генераторами через параметры запуска. + // TODO: Доделать. + ПотоковыйВывод = Плагин("ПотоковыйГенераторОтчетаAllureXMLВерсия2"); + + Родитель = Новый Структура("Родитель, Ключ, Тип, Имя", ИерархияИсполнения); + ЗаполнитьЗначенияСвойств(Родитель, КонтейнерДереваТестов); + РезультатТестирования = СоздатьКонтейнерРезультатовТестирования(КонтейнерДереваТестов); ФильтрДляДочернихУзлов = Неопределено; Если Не УзелДереваТестовУдовлетворяетФильтру(КонтейнерДереваТестов, Фильтр) Тогда @@ -633,7 +641,7 @@ Для каждого ДочернийУзел Из СтрокиКонтейнера Цикл ДочернийРезультатТестирования = Неопределено; Если ДочернийУзел.Тип = Объект.ТипыУзловДереваТестов.Контейнер Тогда - ДочернийРезультатТестирования = ВыполнитьТесты(Загрузчик, ДочернийУзел, ФильтрДляДочернихУзлов, Подписчик); + ДочернийРезультатТестирования = ВыполнитьТесты(Загрузчик, ДочернийУзел, ФильтрДляДочернихУзлов, Подписчик, Родитель); ИначеЕсли ДочернийУзел.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда Если УзелДереваТестовУдовлетворяетФильтру(ДочернийУзел, ФильтрДляДочернихУзлов) Тогда @@ -655,6 +663,14 @@ Если Подписчик <> Неопределено Тогда ОповеститьОСобытии(Подписчик, Объект.ВозможныеСобытия.ВыполненТестовыйМетод, ДочернийРезультатТестирования); КонецЕсли; + + ДочернийРезультатТестирования.Вставить("Родитель", Родитель); + + // Место вызова обработки потокового вывода. + // Должны обрабатываться все подключенные плагины потокового вывода + // TODO: доделать + ПотоковыйВывод.ОбработатьПолученияРезультатаТеста(ЭтаФорма, ДочернийРезультатТестирования); + КонецЕсли; КонецЕсли; Если ДочернийРезультатТестирования <> Неопределено Тогда diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172.xml" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172.xml" new file mode 100644 index 000000000..f4c123923 --- /dev/null +++ "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172.xml" @@ -0,0 +1,101 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + f1efb38b-d0aa-4c08-ba8d-d25721a700ea + + + 6ff8cf9e-182e-4d54-8ad6-2b3926cd2900 + f9d25808-a8dc-4235-bd30-7b3750dfba8d + + + + ПотоковыйГенераторОтчетаAllureXMLВерсия2 + + + ru + Потоковый генератор отчета Allure 2 XML + + + + ExternalDataProcessor.ПотоковыйГенераторОтчетаAllureXMLВерсия2.Form.Форма + + + + + + СостоянияТестов + + + ru + Состояния тестов + + + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + + + + КаталогВывода + + + ru + Каталог вывода + + + + + xs:string + + 0 + Variable + + + false + + + + false + + false + false + + + DontCheck + Items + + + Auto + Auto + + + Auto + + +
Форма
+ +
+
+
\ No newline at end of file diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" new file mode 100644 index 000000000..7301418e5 --- /dev/null +++ "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" @@ -0,0 +1,212 @@ +Перем РазницаВМилисекундахМеждуЮниксИНачалЭпохи; + +// { Plugin interface +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Результат = Новый Структура; + Результат.Вставить("Тип", ВозможныеТипыПлагинов.ПотоковыйГенераторОтчета); + Результат.Вставить("Идентификатор", Метаданные().Имя); + Результат.Вставить("Представление", "Отчет о тестировании в формате XML для Yandex Allure версии 2"); + + Возврат Новый ФиксированнаяСтруктура(Результат); +КонецФункции + +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт +КонецПроцедуры +// } Plugin interface + +// { Report generator interface + +Процедура ОбработатьПолученияРезультатаТестаНаСервере(Знач РезультатТеста) Экспорт + + ОписаниеШага = СоздатьОписаниеШага(РезультатТеста); + + ЗаписьJSON = Новый ЗаписьJSON; + ЗаписьJSON.УстановитьСтроку(); + ЗаписатьJSON(ЗаписьJSON, ОписаниеШага); + СтрокаJSON = ЗаписьJSON.Закрыть(); + + ИмяФайла = ПолучитьУникальноеИмяФайла(КаталогВывода); + + Сообщение = "Уникальное имя файла " + ИмяФайла; + ЗаписьЖурналаРегистрации("xUnitFor1C.ГенераторОтчетаAllureXMLВерсия2", УровеньЖурналаРегистрации.Информация, , , Сообщение); + + ПроверитьИмяФайлаРезультатаAllure(ИмяФайла); + + // Исключаем возможность записи в UTF-8 BOM + ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI); + ЗаписьТекста.Закрыть(); + + ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,, Истина); + ЗаписьТекста.Записать(СтрокаJSON); + ЗаписьТекста.Закрыть(); + +КонецПроцедуры + +// } Report generator interface + +// { Helpers + +Функция ОписаниеСценарияАллюр2() + Перем СтруктураРезультата; + + GUID = Новый УникальныйИдентификатор(); + СтруктураРезультата = Новый Структура(); //"uuid, historyId, name, status, parameters, labels, links, attachments"); + СтруктураРезультата.Вставить("uuid", Строка(GUID)); + СтруктураРезультата.Вставить("historyId", Неопределено); + СтруктураРезультата.Вставить("name", Неопределено); + СтруктураРезультата.Вставить("fullName", ""); + СтруктураРезультата.Вставить("start", Неопределено); + СтруктураРезультата.Вставить("stop", Неопределено); + СтруктураРезультата.Вставить("statusDetails", Новый Структура("known, muted,flaky", Ложь, Ложь, Ложь)); + СтруктураРезультата.Вставить("status", Неопределено); + СтруктураРезультата.Вставить("stage", "finished"); // Внятного описания, зачем это в каждом сценарии нет. + СтруктураРезультата.Вставить("steps", Новый Массив()); + СтруктураРезультата.Вставить("parameters", Новый Массив()); + СтруктураРезультата.Вставить("labels", Новый Массив()); + СтруктураРезультата.Вставить("links", Новый Массив()); + СтруктураРезультата.Вставить("attachments", Новый Массив()); + СтруктураРезультата.Вставить("description", ""); + + Возврат СтруктураРезультата; + +КонецФункции + +Процедура ДобавитьШагТестированияВМассивШагов(Знач РезультатыТестирования, Знач МассивШагов, Знач КоллекцияРодителей, Знач Родитель = Неопределено) + + Если ТипЗнч(РезультатыТестирования) = Тип("Массив") Тогда + Для каждого Строка Из РезультатыТестирования Цикл + КоллекцияРодителей.Вставить(Строка.Ключ, Родитель); + ДобавитьШагТестированияВМассивШагов(Строка, МассивШагов, КоллекцияРодителей, Родитель); + КонецЦикла; + Иначе + Строка = РезультатыТестирования; + Если Строка.Тип = "Элемент" Тогда + Строка.Вставить("Родитель", Родитель); + МассивШагов.Добавить(Строка); + КоллекцияРодителей.Вставить(Строка.Ключ, Родитель); + Иначе + ДобавитьШагТестированияВМассивШагов(Строка.Строки, МассивШагов, КоллекцияРодителей, Строка); + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +Функция НайтиПоКлючу(Знач КоллекцияРодителей, Знач Ключ) + Рез = КоллекцияРодителей.Получить(Ключ); + Возврат Рез; +КонецФункции + +Функция СоздатьОписаниеШага(Знач РезультатШага) + ОписаниеШага = ОписаниеСценарияАллюр2(); + + Родитель = РезультатШага.Родитель; + РодительРодителя = Родитель.Родитель; + + ОписаниеШага.Вставить("name", РезультатШага.Представление); + ОписаниеШага.Вставить("description", РезультатШага.ИмяМетода); + + ОписаниеШага.Вставить("start", РезультатШага.ВремяНачала - РазницаВМилисекундахМеждуЮниксИНачалЭпохи); + ОписаниеШага.Вставить("stop", РезультатШага.ВремяОкончания - РазницаВМилисекундахМеждуЮниксИНачалЭпохи); + + ВставитьОписаниеСтатуса(ОписаниеШага, РезультатШага.Сообщение); + + ОписаниеШага.Вставить("status", СтатусАллюр(РезультатШага.Состояние)); + + ИмяФичи = РодительРодителя.Имя; + ИмяСтори = Родитель.Имя; + ИмяПакета = РезультатШага.Путь; + ИмяХоста = ИмяФичи; + + ОписаниеШага.historyId = СтрШаблон_("%1.%2.%3", ИмяФичи, ИмяСтори, РезультатШага.Представление); + + СписокМеток = ОписаниеШага.labels; + ДобавитьМетку(СписокМеток, "host", ИмяХоста); + ДобавитьМетку(СписокМеток, "package", ИмяПакета); + ДобавитьМетку(СписокМеток, "feature", ИмяФичи); + ДобавитьМетку(СписокМеток, "story", ИмяСтори); + + Возврат ОписаниеШага; +КонецФункции + +Процедура ВставитьОписаниеСтатуса(Знач ОписаниеШага, Знач ОписаниеОшибки = "") + + ОписаниеШага.Вставить("statusDetails", + Новый Структура("known, muted, flaky, message, trace", + Ложь, Ложь, Ложь, ОписаниеОшибки, "")); +КонецПроцедуры + +Функция СтатусАллюр(Знач СостояниеШага) + Рез = "skipped"; + Если СостояниеШага = СостоянияТестов.Пройден Тогда + Рез = "passed"; + ИначеЕсли СостояниеШага = СостоянияТестов.Сломан Тогда + Рез = "broken"; + ИначеЕсли СостояниеШага = СостоянияТестов.НеизвестнаяОшибка Тогда + Рез = "failed"; + ИначеЕсли СостояниеШага = СостоянияТестов.НеРеализован Тогда + Рез = "skipped"; + КонецЕсли; + + Возврат Рез; +КонецФункции + +Процедура ДобавитьМетку(Знач СписокМеток, Знач Имя, Знач Значение) + + Метка = Новый Структура("name, value"); + Метка.name = Имя; + Метка.value = Значение; + + СписокМеток.Вставить(0, Метка); + +КонецПроцедуры + +// Замена функции СтрШаблон на конфигурациях с режимом совместимости < 8.3.6 +// При внедрении в конфигурацию с режимом совместимости >= 8.3.6 данную функцию необходимо удалить +// +Функция СтрШаблон_(Знач СтрокаШаблон, Знач Парам1 = Неопределено, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено) Экспорт + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Парам1); + МассивПараметров.Добавить(Парам2); + МассивПараметров.Добавить(Парам3); + МассивПараметров.Добавить(Парам4); + + Для Сч = 1 По МассивПараметров.Количество() Цикл + ТекЗначение = МассивПараметров[Сч-1]; + СтрокаШаблон = СтрЗаменить(СтрокаШаблон, "%"+Сч, Строка(ТекЗначение)); + КонецЦикла; + Возврат СтрокаШаблон; +КонецФункции + +// задаю уникальное имя для возможности получения одного отчета allure по разным тестовым наборам +Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла) + Файл = Новый Файл(ИмяФайла); + ГУИД = Новый УникальныйИдентификатор; + ИмяФайла = СтрШаблон_("%1-result.json", ГУИД); + ИмяФайла = СтрШаблон_("%1/%2", Файл.Путь, ИмяФайла); + Возврат ИмяФайла; +КонецФункции + +Процедура ПроверитьИмяФайлаРезультатаAllure(ИмяФайла) Экспорт + Сообщение = ""; + Файл = Новый Файл(ИмяФайла); + Если Найти(Файл.Имя, "-result") = 0 Тогда + Сообщение = СтрШаблон_("%1 + |Файл-результат для Allure 2 должен заканчиваться на ""-result.json"" + |Иначе Allure не покажет результаты тестирования + |А сейчас имя файла %2", + Сообщение, Файл.ПолноеИмя); + КонецЕсли; + Если Файл.Расширение <> ".json" Тогда + Сообщение = СтрШаблон_("%1 + |Файл-результат для Allure 2 должен иметь расширение ""json"" + |Иначе Allure не покажет результаты тестирования", + Сообщение); + КонецЕсли; + Если Не ПустаяСтрока (Сообщение) Тогда + ВызватьИсключение Сообщение; + КонецЕсли; +КонецПроцедуры + +// } Helpers + +РазницаВМилисекундахМеждуЮниксИНачалЭпохи = 62135596800000; \ No newline at end of file diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 000000000..30f4aedce --- /dev/null +++ "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PersonalComputer + MobileDevice + + + +
+
\ No newline at end of file diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" new file mode 100644 index 000000000..3652696aa --- /dev/null +++ "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" @@ -0,0 +1,13 @@ + +
+ useIfNecessary + + + + + cfg:ExternalDataProcessorObject.ПотоковыйГенераторОтчетаAllureXMLВерсия2 + + true + + + \ No newline at end of file diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" new file mode 100644 index 000000000..7e4303fa8 --- /dev/null +++ "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -0,0 +1,71 @@ +&НаКлиенте +Перем КонтекстЯдра; + +// { Plugin interface + +&НаКлиенте +Процедура Инициализация(КонтекстЯдраПараметр) Экспорт + КонтекстЯдра = КонтекстЯдраПараметр; +КонецПроцедуры + +&НаКлиенте +Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт + Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); +КонецФункции + +&НаСервере +Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) + Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); +КонецФункции +// } Plugin interface + +// { Report generator interface + +// TODO: добавить недостающие методы API + +&НаКлиенте +Процедура ОбработатьПолученияРезультатаТеста(Знач КонтекстЯдра, Знач РезультатТеста) Экспорт + + // TODO: перенести в подходящий метод API + Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов; + Объект.КаталогВывода = "%TEMP%\dummy.json"; + + ОбработатьПолученияРезультатаТестаНаСервере(РезультатТеста); + +КонецПроцедуры + +// } Report generator interface + +// { Helpers + +&НаСервере +Процедура ОбработатьПолученияРезультатаТестаНаСервере(Знач РезультатТеста) + ЭтотОбъектНаСервере().ОбработатьПолученияРезультатаТестаНаСервере(РезультатТеста); +КонецПроцедуры + +&НаКлиенте +// задаю уникальное имя для возможности получения одного отчета allure по разным тестовым наборам +Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла) + Файл = Новый Файл(ИмяФайла); + ГУИД = Новый УникальныйИдентификатор; + ИмяФайла = СтрЗаменить("%1-result.json", "%1", ГУИД); + //ИмяФайла = СтрЗаменить(ИмяФайла, "%2", Файл.ИмяБезРасширения); + ИмяФайла = Файл.Путь + "/"+ ИмяФайла; + Возврат ИмяФайла; +КонецФункции + +&НаСервере +Процедура ПроверитьИмяФайлаРезультатаAllureСервер(ИмяФайла) Экспорт + + Сообщение = "Уникальное имя файла " + ИмяФайла; + ЗаписьЖурналаРегистрации("xUnitFor1C.ГенераторОтчетаAllureXMLВерсия2", УровеньЖурналаРегистрации.Информация, , , Сообщение); + + ЭтотОбъектНаСервере().ПроверитьИмяФайлаРезультатаAllure(ИмяФайла); +КонецПроцедуры + +&НаСервере +Функция ЭтотОбъектНаСервере() + Возврат РеквизитФормыВЗначение("Объект"); +КонецФункции +// } Helpers + diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure.xml" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure.xml" new file mode 100644 index 000000000..70d42e1f2 --- /dev/null +++ "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure.xml" @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure/Ext/Template.txt" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure/Ext/Template.txt" new file mode 100644 index 000000000..7c6b211b3 --- /dev/null +++ "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure/Ext/Template.txt" @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is Deprecated. Use label with name 'severity' instead. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated since 1.4.15. Size calculation moved to report phase. + + + + + + + + + + + + + + + + + + + + + + + + + This is Deprecated. Use canceled status instead. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From b97ae02af81c6c3e8b6ba197e731d9d89540e8d1 Mon Sep 17 00:00:00 2001 From: Infactum Date: Thu, 24 Jan 2019 15:52:48 +0500 Subject: [PATCH 2/5] =?UTF-8?q?=D0=90=D0=B4=D0=B0=D0=BF=D1=82=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=81=D1=83=D1=89=D0=B5=D1=81=D1=82=D0=B2=D1=83?= =?UTF-8?q?=D1=8E=D1=89=D0=B5=D0=B3=D0=BE=20=D0=BF=D0=BB=D0=B0=D0=B3=D0=B8?= =?UTF-8?q?=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xddTestRunner/Ext/ObjectModule.bsl | 1 - .../Ext/Form/Module.bsl" | 44 ++-- .../Ext/ObjectModule.bsl" | 38 +++- .../Ext/Form/Module.bsl" | 10 + ...\265\321\200\321\201\320\270\321\2172.xml" | 101 --------- .../Ext/ObjectModule.bsl" | 212 ------------------ ...0\244\320\276\321\200\320\274\320\260.xml" | 22 -- .../Ext/Form.xml" | 13 -- .../Ext/Form/Module.bsl" | 71 ------ ...321\205\320\265\320\274\320\260Allure.xml" | 16 -- .../Ext/Template.txt" | 201 ----------------- 11 files changed, 75 insertions(+), 654 deletions(-) delete mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172.xml" delete mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" delete mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260.xml" delete mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" delete mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" delete mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure.xml" delete mode 100644 "plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure/Ext/Template.txt" diff --git a/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl b/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl index d18e622d0..81f7a59d5 100644 --- a/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl +++ b/epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl @@ -41,7 +41,6 @@ Результат.Вставить("Загрузчик", "Загрузчик"); Результат.Вставить("Утилита", "Утилита"); Результат.Вставить("ГенераторОтчета", "ГенераторОтчета"); - Результат.Вставить("ПотоковыйГенераторОтчета", "ПотоковыйГенераторОтчета"); Возврат Новый ФиксированнаяСтруктура(Результат); КонецФункции diff --git "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index ad8151ebf..f64baf4c0 100644 --- "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -607,12 +607,7 @@ КонецФункции &НаКлиенте -Функция ВыполнитьТесты(Знач Загрузчик, Знач КонтейнерДереваТестов, Знач Фильтр = Неопределено, Знач Подписчик = Неопределено, ИерархияИсполнения = Неопределено) Экспорт - - // Временный код. - // Нужна Универсальная работа с потоковыми генераторами через параметры запуска. - // TODO: Доделать. - ПотоковыйВывод = Плагин("ПотоковыйГенераторОтчетаAllureXMLВерсия2"); +Функция ВыполнитьТесты(Знач Загрузчик, Знач КонтейнерДереваТестов, Знач Фильтр = Неопределено, Знач Подписчик = Неопределено, ИерархияИсполнения = Неопределено, ПараметрыПотоковыхОтчетов = Неопределено) Экспорт Родитель = Новый Структура("Родитель, Ключ, Тип, Имя", ИерархияИсполнения); ЗаполнитьЗначенияСвойств(Родитель, КонтейнерДереваТестов); @@ -666,11 +661,14 @@ ДочернийРезультатТестирования.Вставить("Родитель", Родитель); - // Место вызова обработки потокового вывода. - // Должны обрабатываться все подключенные плагины потокового вывода - // TODO: доделать - ПотоковыйВывод.ОбработатьПолученияРезультатаТеста(ЭтаФорма, ДочернийРезультатТестирования); - + Если ПараметрыПотоковыхОтчетов <> Неопределено Тогда + Для Каждого Параметр Из ПараметрыПотоковыхОтчетов Цикл + ПотоковыйВывод = Плагин(Параметр[0]); + Путь = Параметр[1]; + ПотоковыйВывод.ЗаписатьРезультатТеста(ЭтаФорма, ДочернийРезультатТестирования, Путь); + КонецЦикла; + КонецЕсли; + КонецЕсли; КонецЕсли; Если ДочернийРезультатТестирования <> Неопределено Тогда @@ -1132,15 +1130,30 @@ НастройкиШагов = Новый Структура; НастройкиШагов.Вставить("Параметры_xddRun"); НастройкиШагов.Вставить("Параметры_xddReport"); + НастройкиШагов.Вставить("Параметры_xddStreamReport"); НастройкиШагов.Вставить("Параметры_xddExitCodePath"); НастройкиШагов.Вставить("xddShutdown"); НастройкиШагов.Вставить("ТестКлиенты", ТестКлиенты); - ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddRun, НастройкиШагов.Параметры_xddRun); - ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddReport, НастройкиШагов.Параметры_xddReport); + ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddRun, НастройкиШагов.Параметры_xddRun); ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddExitCodePath, НастройкиШагов.Параметры_xddExitCodePath); НастройкиШагов.xddShutdown = ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddShutdown); + Параметры_xddReport = Новый Массив; + Параметры_xddStreamReport = Новый Массив; + Если ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddReport) Тогда + Для Каждого ГенераторОтчета Из ПараметрыЗапуска[ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddReport] Цикл + ОписаниеПлагина = Плагин(ГенераторОтчета[0]).ОписаниеПлагина(Объект.ТипыПлагинов); + Если ОписаниеПлагина.Свойство("ПотоковыйВывод") И ОписаниеПлагина.ПотоковыйВывод Тогда + Параметры_xddStreamReport.Добавить(ГенераторОтчета); + Иначе + Параметры_xddReport.Добавить(ГенераторОтчета); + КонецЕсли; + КонецЦикла; + КонецЕсли; + НастройкиШагов.Параметры_xddReport = Новый ФиксированныйМассив(Параметры_xddReport); + НастройкиШагов.Параметры_xddStreamReport = Новый ФиксированныйМассив(Параметры_xddStreamReport); + Если Не ЕстьПоддержкаАсинхронныхВызовов Тогда ВыполнитьПакетныйЗапускСинхронно(НастройкиШагов); Иначе @@ -1274,7 +1287,12 @@ Процедура НачатьВыполнениеТестов(ДеревоТестовОтЗагрузчика, ОбработкаОповещения) Загрузчик = ОбработкаОповещения.ДополнительныеПараметры.Загрузчик; + + Параметры_xddStreamReport = Неопределено; + ОбработкаОповещения.ДополнительныеПараметры.НастройкиШагов.Свойство("Параметры_xddStreamReport", Параметры_xddStreamReport); + РезультатыТестирования = ЭтаФорма.ВыполнитьТесты(Загрузчик, ДеревоТестовОтЗагрузчика); + Если РезультатыТестирования = Неопределено Тогда ВывестиСообщение("Не найдено результатов тестирования"); КонецЕсли; diff --git "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" index ec7a4d2cb..75f5b4ac4 100644 --- "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" +++ "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" @@ -6,6 +6,7 @@ Результат.Вставить("Тип", ВозможныеТипыПлагинов.ГенераторОтчета); Результат.Вставить("Идентификатор", Метаданные().Имя); Результат.Вставить("Представление", "Отчет о тестировании в формате XML для Yandex Allure версии 2"); + Результат.Вставить("ПотоковыйВывод", Истина); Возврат Новый ФиксированнаяСтруктура(Результат); КонецФункции @@ -48,6 +49,32 @@ КонецФункции +Процедура ЗаписатьРезультатТестаНаСервере(Знач РезультатТеста, Знач ПолныйПутьФайла) Экспорт + + ОписаниеШага = СоздатьОписаниеШага(РезультатТеста); + + ЗаписьJSON = Новый ЗаписьJSON; + ЗаписьJSON.УстановитьСтроку(); + ЗаписатьJSON(ЗаписьJSON, ОписаниеШага); + СтрокаJSON = ЗаписьJSON.Закрыть(); + + ИмяФайла = ПолучитьУникальноеИмяФайла(ПолныйПутьФайла); + + Сообщение = "Уникальное имя файла " + ИмяФайла; + ЗаписьЖурналаРегистрации("xUnitFor1C.ГенераторОтчетаAllureXMLВерсия2", УровеньЖурналаРегистрации.Информация, , , Сообщение); + + ПроверитьИмяФайлаРезультатаAllure(ИмяФайла); + + // Исключаем возможность записи в UTF-8 BOM + ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI); + ЗаписьТекста.Закрыть(); + + ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,, Истина); + ЗаписьТекста.Записать(СтрокаJSON); + ЗаписьТекста.Закрыть(); + +КонецПроцедуры + #Если ТолстыйКлиентОбычноеПриложение Тогда Процедура Показать(Отчет) Экспорт Отчет.Показать(); @@ -144,12 +171,15 @@ Возврат Рез; КонецФункции -Функция СоздатьОписаниеШага(Знач РезультатШага, Знач КоллекцияРодителей) +Функция СоздатьОписаниеШага(Знач РезультатШага, Знач КоллекцияРодителей = Неопределено) ОписаниеШага = ОписаниеСценарияАллюр2(); - + Родитель = РезультатШага.Родитель; - - РодительРодителя = НайтиПоКлючу(КоллекцияРодителей, Родитель.Ключ); + Если КоллекцияРодителей = Неопределено Тогда + РодительРодителя = РезультатШага.Родитель.Родитель; + Иначе + РодительРодителя = НайтиПоКлючу(КоллекцияРодителей, Родитель.Ключ); + КонецЕсли; ОписаниеШага.Вставить("name", РезультатШага.Представление); ОписаниеШага.Вставить("description", РезультатШага.ИмяМетода); diff --git "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index da210225d..79c485b23 100644 --- "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -69,6 +69,16 @@ КонецПроцедуры +&НаКлиенте +Процедура ЗаписатьРезультатТеста(Знач КонтекстЯдра, Знач РезультатТеста, Знач ПолныйПутьФайла) Экспорт + Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов; + ЗаписатьРезультатТестаНаСервере(РезультатТеста, ПолныйПутьФайла); +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьРезультатТестаНаСервере(Знач РезультатТеста, Знач ПолныйПутьФайла) Экспорт + ЭтотОбъектНаСервере().ЗаписатьРезультатТестаНаСервере(РезультатТеста, ПолныйПутьФайла); +КонецПроцедуры // { Helpers diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172.xml" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172.xml" deleted file mode 100644 index f4c123923..000000000 --- "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172.xml" +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - c3831ec8-d8d5-4f93-8a22-f9bfae07327f - f1efb38b-d0aa-4c08-ba8d-d25721a700ea - - - 6ff8cf9e-182e-4d54-8ad6-2b3926cd2900 - f9d25808-a8dc-4235-bd30-7b3750dfba8d - - - - ПотоковыйГенераторОтчетаAllureXMLВерсия2 - - - ru - Потоковый генератор отчета Allure 2 XML - - - - ExternalDataProcessor.ПотоковыйГенераторОтчетаAllureXMLВерсия2.Form.Форма - - - - - - СостоянияТестов - - - ru - Состояния тестов - - - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - - - - КаталогВывода - - - ru - Каталог вывода - - - - - xs:string - - 0 - Variable - - - false - - - - false - - false - false - - - DontCheck - Items - - - Auto - Auto - - - Auto - - -
Форма
- -
-
-
\ No newline at end of file diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" deleted file mode 100644 index 7301418e5..000000000 --- "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" +++ /dev/null @@ -1,212 +0,0 @@ -Перем РазницаВМилисекундахМеждуЮниксИНачалЭпохи; - -// { Plugin interface -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт - Результат = Новый Структура; - Результат.Вставить("Тип", ВозможныеТипыПлагинов.ПотоковыйГенераторОтчета); - Результат.Вставить("Идентификатор", Метаданные().Имя); - Результат.Вставить("Представление", "Отчет о тестировании в формате XML для Yandex Allure версии 2"); - - Возврат Новый ФиксированнаяСтруктура(Результат); -КонецФункции - -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт -КонецПроцедуры -// } Plugin interface - -// { Report generator interface - -Процедура ОбработатьПолученияРезультатаТестаНаСервере(Знач РезультатТеста) Экспорт - - ОписаниеШага = СоздатьОписаниеШага(РезультатТеста); - - ЗаписьJSON = Новый ЗаписьJSON; - ЗаписьJSON.УстановитьСтроку(); - ЗаписатьJSON(ЗаписьJSON, ОписаниеШага); - СтрокаJSON = ЗаписьJSON.Закрыть(); - - ИмяФайла = ПолучитьУникальноеИмяФайла(КаталогВывода); - - Сообщение = "Уникальное имя файла " + ИмяФайла; - ЗаписьЖурналаРегистрации("xUnitFor1C.ГенераторОтчетаAllureXMLВерсия2", УровеньЖурналаРегистрации.Информация, , , Сообщение); - - ПроверитьИмяФайлаРезультатаAllure(ИмяФайла); - - // Исключаем возможность записи в UTF-8 BOM - ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI); - ЗаписьТекста.Закрыть(); - - ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,, Истина); - ЗаписьТекста.Записать(СтрокаJSON); - ЗаписьТекста.Закрыть(); - -КонецПроцедуры - -// } Report generator interface - -// { Helpers - -Функция ОписаниеСценарияАллюр2() - Перем СтруктураРезультата; - - GUID = Новый УникальныйИдентификатор(); - СтруктураРезультата = Новый Структура(); //"uuid, historyId, name, status, parameters, labels, links, attachments"); - СтруктураРезультата.Вставить("uuid", Строка(GUID)); - СтруктураРезультата.Вставить("historyId", Неопределено); - СтруктураРезультата.Вставить("name", Неопределено); - СтруктураРезультата.Вставить("fullName", ""); - СтруктураРезультата.Вставить("start", Неопределено); - СтруктураРезультата.Вставить("stop", Неопределено); - СтруктураРезультата.Вставить("statusDetails", Новый Структура("known, muted,flaky", Ложь, Ложь, Ложь)); - СтруктураРезультата.Вставить("status", Неопределено); - СтруктураРезультата.Вставить("stage", "finished"); // Внятного описания, зачем это в каждом сценарии нет. - СтруктураРезультата.Вставить("steps", Новый Массив()); - СтруктураРезультата.Вставить("parameters", Новый Массив()); - СтруктураРезультата.Вставить("labels", Новый Массив()); - СтруктураРезультата.Вставить("links", Новый Массив()); - СтруктураРезультата.Вставить("attachments", Новый Массив()); - СтруктураРезультата.Вставить("description", ""); - - Возврат СтруктураРезультата; - -КонецФункции - -Процедура ДобавитьШагТестированияВМассивШагов(Знач РезультатыТестирования, Знач МассивШагов, Знач КоллекцияРодителей, Знач Родитель = Неопределено) - - Если ТипЗнч(РезультатыТестирования) = Тип("Массив") Тогда - Для каждого Строка Из РезультатыТестирования Цикл - КоллекцияРодителей.Вставить(Строка.Ключ, Родитель); - ДобавитьШагТестированияВМассивШагов(Строка, МассивШагов, КоллекцияРодителей, Родитель); - КонецЦикла; - Иначе - Строка = РезультатыТестирования; - Если Строка.Тип = "Элемент" Тогда - Строка.Вставить("Родитель", Родитель); - МассивШагов.Добавить(Строка); - КоллекцияРодителей.Вставить(Строка.Ключ, Родитель); - Иначе - ДобавитьШагТестированияВМассивШагов(Строка.Строки, МассивШагов, КоллекцияРодителей, Строка); - КонецЕсли; - КонецЕсли; -КонецПроцедуры - -Функция НайтиПоКлючу(Знач КоллекцияРодителей, Знач Ключ) - Рез = КоллекцияРодителей.Получить(Ключ); - Возврат Рез; -КонецФункции - -Функция СоздатьОписаниеШага(Знач РезультатШага) - ОписаниеШага = ОписаниеСценарияАллюр2(); - - Родитель = РезультатШага.Родитель; - РодительРодителя = Родитель.Родитель; - - ОписаниеШага.Вставить("name", РезультатШага.Представление); - ОписаниеШага.Вставить("description", РезультатШага.ИмяМетода); - - ОписаниеШага.Вставить("start", РезультатШага.ВремяНачала - РазницаВМилисекундахМеждуЮниксИНачалЭпохи); - ОписаниеШага.Вставить("stop", РезультатШага.ВремяОкончания - РазницаВМилисекундахМеждуЮниксИНачалЭпохи); - - ВставитьОписаниеСтатуса(ОписаниеШага, РезультатШага.Сообщение); - - ОписаниеШага.Вставить("status", СтатусАллюр(РезультатШага.Состояние)); - - ИмяФичи = РодительРодителя.Имя; - ИмяСтори = Родитель.Имя; - ИмяПакета = РезультатШага.Путь; - ИмяХоста = ИмяФичи; - - ОписаниеШага.historyId = СтрШаблон_("%1.%2.%3", ИмяФичи, ИмяСтори, РезультатШага.Представление); - - СписокМеток = ОписаниеШага.labels; - ДобавитьМетку(СписокМеток, "host", ИмяХоста); - ДобавитьМетку(СписокМеток, "package", ИмяПакета); - ДобавитьМетку(СписокМеток, "feature", ИмяФичи); - ДобавитьМетку(СписокМеток, "story", ИмяСтори); - - Возврат ОписаниеШага; -КонецФункции - -Процедура ВставитьОписаниеСтатуса(Знач ОписаниеШага, Знач ОписаниеОшибки = "") - - ОписаниеШага.Вставить("statusDetails", - Новый Структура("known, muted, flaky, message, trace", - Ложь, Ложь, Ложь, ОписаниеОшибки, "")); -КонецПроцедуры - -Функция СтатусАллюр(Знач СостояниеШага) - Рез = "skipped"; - Если СостояниеШага = СостоянияТестов.Пройден Тогда - Рез = "passed"; - ИначеЕсли СостояниеШага = СостоянияТестов.Сломан Тогда - Рез = "broken"; - ИначеЕсли СостояниеШага = СостоянияТестов.НеизвестнаяОшибка Тогда - Рез = "failed"; - ИначеЕсли СостояниеШага = СостоянияТестов.НеРеализован Тогда - Рез = "skipped"; - КонецЕсли; - - Возврат Рез; -КонецФункции - -Процедура ДобавитьМетку(Знач СписокМеток, Знач Имя, Знач Значение) - - Метка = Новый Структура("name, value"); - Метка.name = Имя; - Метка.value = Значение; - - СписокМеток.Вставить(0, Метка); - -КонецПроцедуры - -// Замена функции СтрШаблон на конфигурациях с режимом совместимости < 8.3.6 -// При внедрении в конфигурацию с режимом совместимости >= 8.3.6 данную функцию необходимо удалить -// -Функция СтрШаблон_(Знач СтрокаШаблон, Знач Парам1 = Неопределено, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено) Экспорт - - МассивПараметров = Новый Массив; - МассивПараметров.Добавить(Парам1); - МассивПараметров.Добавить(Парам2); - МассивПараметров.Добавить(Парам3); - МассивПараметров.Добавить(Парам4); - - Для Сч = 1 По МассивПараметров.Количество() Цикл - ТекЗначение = МассивПараметров[Сч-1]; - СтрокаШаблон = СтрЗаменить(СтрокаШаблон, "%"+Сч, Строка(ТекЗначение)); - КонецЦикла; - Возврат СтрокаШаблон; -КонецФункции - -// задаю уникальное имя для возможности получения одного отчета allure по разным тестовым наборам -Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла) - Файл = Новый Файл(ИмяФайла); - ГУИД = Новый УникальныйИдентификатор; - ИмяФайла = СтрШаблон_("%1-result.json", ГУИД); - ИмяФайла = СтрШаблон_("%1/%2", Файл.Путь, ИмяФайла); - Возврат ИмяФайла; -КонецФункции - -Процедура ПроверитьИмяФайлаРезультатаAllure(ИмяФайла) Экспорт - Сообщение = ""; - Файл = Новый Файл(ИмяФайла); - Если Найти(Файл.Имя, "-result") = 0 Тогда - Сообщение = СтрШаблон_("%1 - |Файл-результат для Allure 2 должен заканчиваться на ""-result.json"" - |Иначе Allure не покажет результаты тестирования - |А сейчас имя файла %2", - Сообщение, Файл.ПолноеИмя); - КонецЕсли; - Если Файл.Расширение <> ".json" Тогда - Сообщение = СтрШаблон_("%1 - |Файл-результат для Allure 2 должен иметь расширение ""json"" - |Иначе Allure не покажет результаты тестирования", - Сообщение); - КонецЕсли; - Если Не ПустаяСтрока (Сообщение) Тогда - ВызватьИсключение Сообщение; - КонецЕсли; -КонецПроцедуры - -// } Helpers - -РазницаВМилисекундахМеждуЮниксИНачалЭпохи = 62135596800000; \ No newline at end of file diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260.xml" deleted file mode 100644 index 30f4aedce..000000000 --- "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260.xml" +++ /dev/null @@ -1,22 +0,0 @@ - - -
- - Форма - - - ru - Форма - - - - Managed - false - - PersonalComputer - MobileDevice - - - -
-
\ No newline at end of file diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" deleted file mode 100644 index 3652696aa..000000000 --- "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.xml" +++ /dev/null @@ -1,13 +0,0 @@ - -
- useIfNecessary - - - - - cfg:ExternalDataProcessorObject.ПотоковыйГенераторОтчетаAllureXMLВерсия2 - - true - - - \ No newline at end of file diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" deleted file mode 100644 index 7e4303fa8..000000000 --- "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ /dev/null @@ -1,71 +0,0 @@ -&НаКлиенте -Перем КонтекстЯдра; - -// { Plugin interface - -&НаКлиенте -Процедура Инициализация(КонтекстЯдраПараметр) Экспорт - КонтекстЯдра = КонтекстЯдраПараметр; -КонецПроцедуры - -&НаКлиенте -Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт - Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов); -КонецФункции - -&НаСервере -Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов) - Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов); -КонецФункции -// } Plugin interface - -// { Report generator interface - -// TODO: добавить недостающие методы API - -&НаКлиенте -Процедура ОбработатьПолученияРезультатаТеста(Знач КонтекстЯдра, Знач РезультатТеста) Экспорт - - // TODO: перенести в подходящий метод API - Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов; - Объект.КаталогВывода = "%TEMP%\dummy.json"; - - ОбработатьПолученияРезультатаТестаНаСервере(РезультатТеста); - -КонецПроцедуры - -// } Report generator interface - -// { Helpers - -&НаСервере -Процедура ОбработатьПолученияРезультатаТестаНаСервере(Знач РезультатТеста) - ЭтотОбъектНаСервере().ОбработатьПолученияРезультатаТестаНаСервере(РезультатТеста); -КонецПроцедуры - -&НаКлиенте -// задаю уникальное имя для возможности получения одного отчета allure по разным тестовым наборам -Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла) - Файл = Новый Файл(ИмяФайла); - ГУИД = Новый УникальныйИдентификатор; - ИмяФайла = СтрЗаменить("%1-result.json", "%1", ГУИД); - //ИмяФайла = СтрЗаменить(ИмяФайла, "%2", Файл.ИмяБезРасширения); - ИмяФайла = Файл.Путь + "/"+ ИмяФайла; - Возврат ИмяФайла; -КонецФункции - -&НаСервере -Процедура ПроверитьИмяФайлаРезультатаAllureСервер(ИмяФайла) Экспорт - - Сообщение = "Уникальное имя файла " + ИмяФайла; - ЗаписьЖурналаРегистрации("xUnitFor1C.ГенераторОтчетаAllureXMLВерсия2", УровеньЖурналаРегистрации.Информация, , , Сообщение); - - ЭтотОбъектНаСервере().ПроверитьИмяФайлаРезультатаAllure(ИмяФайла); -КонецПроцедуры - -&НаСервере -Функция ЭтотОбъектНаСервере() - Возврат РеквизитФормыВЗначение("Объект"); -КонецФункции -// } Helpers - diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure.xml" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure.xml" deleted file mode 100644 index 70d42e1f2..000000000 --- "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure.xml" +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure/Ext/Template.txt" "b/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure/Ext/Template.txt" deleted file mode 100644 index 7c6b211b3..000000000 --- "a/plugins/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\237\320\276\321\202\320\276\320\272\320\276\320\262\321\213\320\271\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Templates/\320\241\321\205\320\265\320\274\320\260Allure/Ext/Template.txt" +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This is Deprecated. Use label with name 'severity' instead. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deprecated since 1.4.15. Size calculation moved to report phase. - - - - - - - - - - - - - - - - - - - - - - - - - This is Deprecated. Use canceled status instead. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From a74511c292eccc5e4bb0434b46e2334f19a9c428 Mon Sep 17 00:00:00 2001 From: Infactum Date: Thu, 24 Jan 2019 16:59:23 +0500 Subject: [PATCH 3/5] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20code=20review?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/Form/Module.bsl" | 41 ++++++++++------ .../Ext/ObjectModule.bsl" | 48 +++++++++---------- 2 files changed, 48 insertions(+), 41 deletions(-) diff --git "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index f64baf4c0..456c08914 100644 --- "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -610,7 +610,7 @@ Функция ВыполнитьТесты(Знач Загрузчик, Знач КонтейнерДереваТестов, Знач Фильтр = Неопределено, Знач Подписчик = Неопределено, ИерархияИсполнения = Неопределено, ПараметрыПотоковыхОтчетов = Неопределено) Экспорт Родитель = Новый Структура("Родитель, Ключ, Тип, Имя", ИерархияИсполнения); - ЗаполнитьЗначенияСвойств(Родитель, КонтейнерДереваТестов); + ЗаполнитьЗначенияСвойств(Родитель, КонтейнерДереваТестов, "Ключ, Тип, Имя"); РезультатТестирования = СоздатьКонтейнерРезультатовТестирования(КонтейнерДереваТестов); ФильтрДляДочернихУзлов = Неопределено; @@ -1139,20 +1139,7 @@ ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddExitCodePath, НастройкиШагов.Параметры_xddExitCodePath); НастройкиШагов.xddShutdown = ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddShutdown); - Параметры_xddReport = Новый Массив; - Параметры_xddStreamReport = Новый Массив; - Если ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddReport) Тогда - Для Каждого ГенераторОтчета Из ПараметрыЗапуска[ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddReport] Цикл - ОписаниеПлагина = Плагин(ГенераторОтчета[0]).ОписаниеПлагина(Объект.ТипыПлагинов); - Если ОписаниеПлагина.Свойство("ПотоковыйВывод") И ОписаниеПлагина.ПотоковыйВывод Тогда - Параметры_xddStreamReport.Добавить(ГенераторОтчета); - Иначе - Параметры_xddReport.Добавить(ГенераторОтчета); - КонецЕсли; - КонецЦикла; - КонецЕсли; - НастройкиШагов.Параметры_xddReport = Новый ФиксированныйМассив(Параметры_xddReport); - НастройкиШагов.Параметры_xddStreamReport = Новый ФиксированныйМассив(Параметры_xddStreamReport); + СобратьНастройкиОтчетовТестирования(НастройкиШагов, ПараметрыЗапуска); Если Не ЕстьПоддержкаАсинхронныхВызовов Тогда ВыполнитьПакетныйЗапускСинхронно(НастройкиШагов); @@ -1174,6 +1161,30 @@ КонецПроцедуры +&НаКлиенте +Процедура СобратьНастройкиОтчетовТестирования(НастройкиШагов, ПараметрыЗапуска) + + ПарсерКоманднойСтроки = Плагин("ПарсерКоманднойСтроки"); + + Параметры_xddReport = Новый Массив; + Параметры_xddStreamReport = Новый Массив; + + Если ПараметрыЗапуска.Свойство(ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddReport) Тогда + Для Каждого ГенераторОтчета Из ПараметрыЗапуска[ПарсерКоманднойСтроки.Объект.ВозможныеКлючи.xddReport] Цикл + ОписаниеПлагина = Плагин(ГенераторОтчета[0]).ОписаниеПлагина(Объект.ТипыПлагинов); + Если ОписаниеПлагина.Свойство("ПотоковыйВывод") И ОписаниеПлагина.ПотоковыйВывод Тогда + Параметры_xddStreamReport.Добавить(ГенераторОтчета); + Иначе + Параметры_xddReport.Добавить(ГенераторОтчета); + КонецЕсли; + КонецЦикла; + КонецЕсли; + + НастройкиШагов.Параметры_xddReport = Новый ФиксированныйМассив(Параметры_xddReport); + НастройкиШагов.Параметры_xddStreamReport = Новый ФиксированныйМассив(Параметры_xddStreamReport); + +КонецПроцедуры + &НаКлиенте Процедура ВыполнитьПакетныйЗапускСинхронно(Знач ПараметрыЗапуска) diff --git "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" index 75f5b4ac4..8ef35c70e 100644 --- "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" +++ "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260AllureXML\320\222\320\265\321\200\321\201\320\270\321\2172/Ext/ObjectModule.bsl" @@ -33,10 +33,7 @@ РезНабор = Новый Массив; Для каждого ОписаниеШага Из МассивОписанийШагов Цикл - ЗаписьJSON = Новый ЗаписьJSON; - ЗаписьJSON.УстановитьСтроку(); - ЗаписатьJSON(ЗаписьJSON, ОписаниеШага); - СтрокаJSON = ЗаписьJSON.Закрыть(); + СтрокаJSON = СериализоватьОписаниеШага(ОписаниеШага); Отчет = Новый ТекстовыйДокумент; Отчет.УстановитьТекст(СтрокаJSON); @@ -52,26 +49,8 @@ Процедура ЗаписатьРезультатТестаНаСервере(Знач РезультатТеста, Знач ПолныйПутьФайла) Экспорт ОписаниеШага = СоздатьОписаниеШага(РезультатТеста); - - ЗаписьJSON = Новый ЗаписьJSON; - ЗаписьJSON.УстановитьСтроку(); - ЗаписатьJSON(ЗаписьJSON, ОписаниеШага); - СтрокаJSON = ЗаписьJSON.Закрыть(); - - ИмяФайла = ПолучитьУникальноеИмяФайла(ПолныйПутьФайла); - - Сообщение = "Уникальное имя файла " + ИмяФайла; - ЗаписьЖурналаРегистрации("xUnitFor1C.ГенераторОтчетаAllureXMLВерсия2", УровеньЖурналаРегистрации.Информация, , , Сообщение); - - ПроверитьИмяФайлаРезультатаAllure(ИмяФайла); - - // Исключаем возможность записи в UTF-8 BOM - ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI); - ЗаписьТекста.Закрыть(); - - ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,, Истина); - ЗаписьТекста.Записать(СтрокаJSON); - ЗаписьТекста.Закрыть(); + Отчет = СериализоватьОписаниеШага(ОписаниеШага); + Экспортировать(Отчет, ПолныйПутьФайла); КонецПроцедуры @@ -82,8 +61,14 @@ #КонецЕсли Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт - - СтрокаJSON = Отчет.ПолучитьТекст(); + + Перем СтрокаJSON; + + Если ТипЗнч(Отчет) = Тип("Строка") Тогда + СтрокаJSON = Отчет; + Иначе + СтрокаJSON = Отчет.ПолучитьТекст(); + КонецЕсли; ИмяФайла = ПолныйПутьФайла; @@ -293,6 +278,17 @@ КонецЕсли; КонецПроцедуры +Функция СериализоватьОписаниеШага(ОписаниеШага) + + ЗаписьJSON = Новый ЗаписьJSON; + ЗаписьJSON.УстановитьСтроку(); + ЗаписатьJSON(ЗаписьJSON, ОписаниеШага); + СтрокаJSON = ЗаписьJSON.Закрыть(); + + Возврат СтрокаJSON; + +КонецФункции + // } Helpers РазницаВМилисекундахМеждуЮниксИНачалЭпохи = 62135596800000; \ No newline at end of file From 87fbfca72c21efe7d78976f09983397224cd4f18 Mon Sep 17 00:00:00 2001 From: Infactum Date: Thu, 24 Jan 2019 18:51:02 +0500 Subject: [PATCH 4/5] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20+=20=D0=BF=D0=BE=D1=82=D0=BE=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0?= =?UTF-8?q?=20=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=20JUnit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/Form/Module.bsl" | 4 +- .../Ext/ObjectModule.bsl" | 62 +++++++++++++++++++ .../Ext/Form/Module.bsl" | 12 ++++ 3 files changed, 76 insertions(+), 2 deletions(-) diff --git "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 456c08914..d0093f14d 100644 --- "a/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/epf/xddTestRunner/xddTestRunner/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -636,7 +636,7 @@ Для каждого ДочернийУзел Из СтрокиКонтейнера Цикл ДочернийРезультатТестирования = Неопределено; Если ДочернийУзел.Тип = Объект.ТипыУзловДереваТестов.Контейнер Тогда - ДочернийРезультатТестирования = ВыполнитьТесты(Загрузчик, ДочернийУзел, ФильтрДляДочернихУзлов, Подписчик, Родитель); + ДочернийРезультатТестирования = ВыполнитьТесты(Загрузчик, ДочернийУзел, ФильтрДляДочернихУзлов, Подписчик, Родитель, ПараметрыПотоковыхОтчетов); ИначеЕсли ДочернийУзел.Тип = Объект.ТипыУзловДереваТестов.Элемент Тогда Если УзелДереваТестовУдовлетворяетФильтру(ДочернийУзел, ФильтрДляДочернихУзлов) Тогда @@ -1302,7 +1302,7 @@ Параметры_xddStreamReport = Неопределено; ОбработкаОповещения.ДополнительныеПараметры.НастройкиШагов.Свойство("Параметры_xddStreamReport", Параметры_xddStreamReport); - РезультатыТестирования = ЭтаФорма.ВыполнитьТесты(Загрузчик, ДеревоТестовОтЗагрузчика); + РезультатыТестирования = ЭтаФорма.ВыполнитьТесты(Загрузчик, ДеревоТестовОтЗагрузчика,,,,Параметры_xddStreamReport); Если РезультатыТестирования = Неопределено Тогда ВывестиСообщение("Не найдено результатов тестирования"); diff --git "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Ext/ObjectModule.bsl" "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Ext/ObjectModule.bsl" index 8789e60a8..7bf233076 100644 --- "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Ext/ObjectModule.bsl" +++ "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Ext/ObjectModule.bsl" @@ -5,6 +5,7 @@ Результат.Вставить("Тип", ВозможныеТипыПлагинов.ГенераторОтчета); Результат.Вставить("Идентификатор", Метаданные().Имя); Результат.Вставить("Представление", "Отчет о тестировании в формате JUnit.xml"); + Результат.Вставить("ПотоковыйВывод", Истина); Возврат Новый ФиксированнаяСтруктура(Результат); КонецФункции @@ -100,6 +101,41 @@ Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт Отчет.Записать(ПолныйПутьФайла); КонецПроцедуры + +Процедура ЗаписатьРезультатТестаНаСервере(Знач РезультатТеста, Знач ПолныйПутьФайла) Экспорт + + ЗаписьXML = Новый ЗаписьXML; + ЗаписьXML.УстановитьСтроку("UTF-8"); + ЗаписьXML.ЗаписатьОбъявлениеXML(); + + ЗаписьXML.ЗаписатьНачалоЭлемента("testsuites"); + ЗаписьXML.ЗаписатьАтрибут("name", XMLСтрока(РезультатТеста.Родитель.Родитель.Имя)); + ЗаписьXML.ЗаписатьАтрибут("time", XMLСтрока(РезультатТеста.ВремяВыполнения)); + ЗаписьXML.ЗаписатьАтрибут("tests", XMLСтрока(1)); + ЗаписьXML.ЗаписатьАтрибут("failures", XMLСтрока(?(РезультатТеста.Состояние = СостоянияТестов.Сломан, 1, 0))); + ЗаписьXML.ЗаписатьАтрибут("errors", XMLСтрока(?(РезультатТеста.Состояние = СостоянияТестов.НеРеализован, 1, 0))); + ЗаписьXML.ЗаписатьАтрибут("skipped", XMLСтрока(?(РезультатТеста.Состояние = СостоянияТестов.НеизвестнаяОшибка, 1, 0))); + + ЗаписьXML.ЗаписатьНачалоЭлемента("testsuite"); + ЗаписьXML.ЗаписатьАтрибут("name", РезультатТеста.Родитель.Родитель.Имя); + ЗаписьXML.ЗаписатьНачалоЭлемента("testsuite"); + ЗаписьXML.ЗаписатьАтрибут("name", РезультатТеста.Родитель.Имя); + + ВывестиРезультатЭлемента(ЗаписьXML, РезультатТеста, РезультатТеста.Родитель.Имя); + + ЗаписьXML.ЗаписатьКонецЭлемента(); + ЗаписьXML.ЗаписатьКонецЭлемента(); + + ЗаписьXML.ЗаписатьКонецЭлемента(); + + СтрокаXML = ЗаписьXML.Закрыть(); + Отчет = Новый ТекстовыйДокумент; + Отчет.ДобавитьСтроку(СтрокаXML); + + ИмяФайла = ПолучитьУникальноеИмяФайла(ПолныйПутьФайла); + Экспортировать(Отчет, ИмяФайла); + +КонецПроцедуры // } Report generator interface // { Helpers @@ -112,4 +148,30 @@ Возврат Результат; КонецФункции + +// Замена функции СтрШаблон на конфигурациях с режимом совместимости < 8.3.6 +// При внедрении в конфигурацию с режимом совместимости >= 8.3.6 данную функцию необходимо удалить +// +Функция СтрШаблон_(Знач СтрокаШаблон, Знач Парам1 = Неопределено, Знач Парам2 = Неопределено, Знач Парам3 = Неопределено, Знач Парам4 = Неопределено) Экспорт + + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Парам1); + МассивПараметров.Добавить(Парам2); + МассивПараметров.Добавить(Парам3); + МассивПараметров.Добавить(Парам4); + + Для Сч = 1 По МассивПараметров.Количество() Цикл + ТекЗначение = МассивПараметров[Сч-1]; + СтрокаШаблон = СтрЗаменить(СтрокаШаблон, "%"+Сч, Строка(ТекЗначение)); + КонецЦикла; + Возврат СтрокаШаблон; +КонецФункции + +Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла) + Файл = Новый Файл(ИмяФайла); + ГУИД = Новый УникальныйИдентификатор; + ИмяФайла = СтрШаблон_("%1-result.xml", ГУИД); + ИмяФайла = СтрШаблон_("%1/%2", Файл.Путь, ИмяФайла); + Возврат ИмяФайла; +КонецФункции // } Helpers diff --git "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 176a23484..afef4486b 100644 --- "a/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/plugins/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\236\321\202\321\207\320\265\321\202\320\260JUnitXML/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -41,6 +41,18 @@ Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт Отчет.Записать(ПолныйПутьФайла); КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьРезультатТеста(Знач КонтекстЯдра, Знач РезультатТеста, Знач ПолныйПутьФайла) Экспорт + Объект.СостоянияТестов = КонтекстЯдра.Объект.СостоянияТестов; + ЗаписатьРезультатТестаНаСервере(РезультатТеста, ПолныйПутьФайла); +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьРезультатТестаНаСервере(Знач РезультатТеста, Знач ПолныйПутьФайла) Экспорт + ЭтотОбъектНаСервере().ЗаписатьРезультатТестаНаСервере(РезультатТеста, ПолныйПутьФайла); +КонецПроцедуры + // } Report generator interface &НаКлиенте From 0279d1b2228731d1e192a5a2fd5dc06178c0c8c9 Mon Sep 17 00:00:00 2001 From: Infactum Date: Thu, 24 Jan 2019 19:12:24 +0500 Subject: [PATCH 5/5] =?UTF-8?q?=D0=90=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE?= =?UTF-8?q?=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/ObjectModule.bsl" | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git "a/doc/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/Ext/ObjectModule.bsl" "b/doc/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/Ext/ObjectModule.bsl" index a40c39799..b1e377311 100644 --- "a/doc/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/Ext/ObjectModule.bsl" +++ "b/doc/PluginsTemplates/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/\320\250\320\260\320\261\320\273\320\276\320\275\320\223\320\265\320\275\320\265\321\200\320\260\321\202\320\276\321\200\320\260\320\236\321\202\321\207\320\265\321\202\320\260/Ext/ObjectModule.bsl" @@ -15,6 +15,9 @@ Результат.Вставить("Тип", ВозможныеТипыПлагинов.ГенераторОтчета); Результат.Вставить("Идентификатор", Метаданные().Имя); Результат.Вставить("Представление", ""); + // Задействует АПИ для вывода результата отчета по мере исполнения тестов + //Результат.Вставить("ПотоковыйВывод", Истина); + ВызватьИсключение "Необходимо указать представление"; Возврат Новый ФиксированнаяСтруктура(Результат); @@ -68,4 +71,12 @@ Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт ВызватьИсключение "Метод не реализован"; КонецПроцедуры + +// Сохраняет результ теста сразу после его исполнения +// Используется если в описании установлено свойство "ПотоковыйВывод" +&НаКлиенте +Процедура ЗаписатьРезультатТеста(Знач КонтекстЯдра, Знач РезультатТеста, Знач ПолныйПутьФайла) Экспорт + ВызватьИсключение "Метод не реализован"; +КонецПроцедуры + // } Report generator interface