From 2f122621303bba87772bc34a380b84285ac92791 Mon Sep 17 00:00:00 2001 From: Infactum Date: Fri, 25 Jan 2019 18:36:24 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=82=D1=87=D0=B5=D1=82=20Allure=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D0=BC=D0=B5=D1=80=D0=B5=20=D0=B2=D1=8B=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D1=86=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=D1=80=D0=B8=D0=B5=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/Form/Module.bsl" | 111 ++++++++++-------- .../Ext/ObjectModule.bsl" | 17 +-- 2 files changed, 66 insertions(+), 62 deletions(-) diff --git "a/epf/bddRunner/bddRunner/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/bddRunner/bddRunner/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 b4d16c04b..fd75430bf 100644 --- "a/epf/bddRunner/bddRunner/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/bddRunner/bddRunner/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" @@ -10216,6 +10216,15 @@ ВызватьМетодСценарияЕслиОнЕсть(СтрокаСценария, "ПередОкончаниемСценария", , БылаОшибка, ОписаниеОшибки,СлужебныеДанныеСценария); КонецПроцедуры +&НаКлиенте +Процедура ДействияПослеПолученияРезультатаПрохожденияТестовСценария(Результат) + + Если Объект.ДелатьОтчетВФорматеАллюр Тогда + ОтчетАллюр(Результат); + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Функция ПроверитьНаличиеИнструментаДляСозданияСкриншотов() Если НЕ Объект.СоздаватьИнструкциюHTML и НЕ Объект.ДелатьСкриншотПриВозникновенииОшибки и НЕ Объект.СоздаватьИнструкциюMarkdown Тогда @@ -10584,6 +10593,8 @@ ПрекратитьВыполнениШаговТакКакЗакончилсяСценарий = Истина; + ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария); + Если Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда СделатьСкриншотВозникновенияОшибки(СтрокаШага, СтрокаСценария, РезультатПрохожденияТестовСценария); Иначе @@ -10847,6 +10858,8 @@ РезультатПрохожденияТестовСценария.Вставить("ВремяОкончания", ТекущаяУниверсальнаяДатаВМиллисекундах()); + ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария); + Если СтрокаСценария.Статус = "Failed" и Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда СделатьСкриншотВозникновенияОшибки(СтрокаШага, СтрокаСценария, РезультатПрохожденияТестовСценария); Иначе @@ -11258,6 +11271,8 @@ ПроверитьФлагОстановкаПриВозникновенииОшибки(); + ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария); + Если Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда СделатьСкриншотВозникновенияОшибки(СтрокаШага, СтрокаСценария, РезультатПрохожденияТестовСценария); Иначе @@ -11373,6 +11388,8 @@ ЗаписатьСтрокуВТекстовыйЛог("Failed: " + ОписаниеОшибки); КонецЕсли; + ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария); + ОстановитьЗаписьВидеоОдногоШага(); Если СтрокаСценария.Статус = "Failed" и Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда @@ -11444,6 +11461,50 @@ КонецПроцедуры +&НаКлиенте +Функция ОтчетАллюр(РезультатПрохожденияТестовСценария) + + СтруктураОФ = Новый Структура; + + ИДСтроки = МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].СтрокаДерева; + + СтруктураОФ.Вставить("РезультатПрохожденияТестовСценария", РезультатПрохожденияТестовСценария); + СтруктураОФ.Вставить("ИДСтрокиДерева", ИДСтроки); + + ДвоичныеДанные = Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/vendor/allure-framework/allure.xsd"); + СтруктураОФ.Вставить("СхемаAllure", ДвоичныеДанные); + СтруктураОФ.Вставить("ЕстьПоддержкаАсинхронныхВызовов", ЕстьПоддержкаАсинхронныхВызовов); + + СформироватьОтчетАллюрСервер(СтруктураОФ); + + ПутьКаталогаРодителяОтчетовАллюр = ПреобразоватьПутьСТочкамиКНормальномуПути(Объект.КаталогOutputAllure); + ПутьКаталогаРодителяОтчетовАллюрСоСлешем = ДополнитьСлешВПуть(ПутьКаталогаРодителяОтчетовАллюр); + + Если Объект.ДелатьСкриншотПриВозникновенииОшибки + И РезультатПрохожденияТестовСценария.Свойство("МассивСкриншотов") Тогда + Для Каждого СтруктураСкриншот Из РезультатПрохожденияТестовСценария.МассивСкриншотов Цикл + ВременныйФайл = ПолучитьИмяВременногоФайла("png"); + СтруктураСкриншот.ДвоичныеДанные.Записать(ВременныйФайл); //TODO подумать об ускорении + КопироватьФайлКомандаСистемы(ВременныйФайл, ПутьКаталогаРодителяОтчетовАллюрСоСлешем + СтруктураСкриншот.ИмяФайла); + КонецЦикла; + КонецЕсли; + + Если СтруктураОФ.Свойство("МассивXMLОтчетаAllure") Тогда + МассивXMLОтчетаAllure = СтруктураОФ.МассивXMLОтчетаAllure; + Для каждого Элем Из МассивXMLОтчетаAllure Цикл + ИмяФайлаXML = ПутьКаталогаРодителяОтчетовАллюрСоСлешем + Элем.РеальноеИмяФайла; + ФайлXMLДвоичныеДанные = Элем.ФайлXMLДвоичныеДанные; + ФайлXMLДвоичныеДанные.Записать(ИмяФайлаXML); + + ТекстСообщения = "Файл отчета Allure-report (%1) записан."; + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайлаXML); + Отладка(ТекстСообщения); + ЗаписатьСтрокуВТекстовыйЛог(ТекстСообщения); + КонецЦикла; + КонецЕсли; + +КонецФункции + &НаКлиенте Процедура ДобавитьШагиВРезультатПрохожденияТестовШаговКоторыеНеВыполнялись(Шаги, ТекИД, РезультатПрохожденияТестовШагов) Ид = ТекИД; @@ -11992,56 +12053,9 @@ КонецЕсли; СделатьСообщениеВсеСценарииОбработаны(); - Если Объект.ДелатьОтчетВФорматеАллюр Тогда - СтруктураОФ = Новый Структура; - СтруктураОФ.Вставить("МассивРезультатПрохожденияТестовСценария", МассивРезультатПрохожденияТестовСценария); - СтруктураОФ.Вставить("МассивИДСтрокиДерева", МассивИДСтрокиДерева); - - ДвоичныеДанные = Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/vendor/allure-framework/allure.xsd"); - СтруктураОФ.Вставить("СхемаAllure", ДвоичныеДанные); - СтруктураОФ.Вставить("ЕстьПоддержкаАсинхронныхВызовов", ЕстьПоддержкаАсинхронныхВызовов); - - СформироватьОтчетАллюрСервер(СтруктураОФ); - - ПутьКаталогаРодителяОтчетовАллюр = ПреобразоватьПутьСТочкамиКНормальномуПути(Объект.КаталогOutputAllure); - ПутьКаталогаРодителяОтчетовАллюрСоСлешем = ДополнитьСлешВПуть(ПутьКаталогаРодителяОтчетовАллюр); - - Если Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда - Для каждого РезультатПрохожденияТестовСценария Из МассивРезультатПрохожденияТестовСценария Цикл - Если Не РезультатПрохожденияТестовСценария.Свойство("МассивСкриншотов") Тогда - Продолжить; - КонецЕсли; - - Для каждого СтруктураСкриншот Из РезультатПрохожденияТестовСценария.МассивСкриншотов Цикл - ВременныйФайл = ПолучитьИмяВременногоФайла("png"); - СтруктураСкриншот.ДвоичныеДанные.Записать(ВременныйФайл);//TODO подумать об ускорении - КопироватьФайлКомандаСистемы(ВременныйФайл, ПутьКаталогаРодителяОтчетовАллюрСоСлешем + СтруктураСкриншот.ИмяФайла); - КонецЦикла; - КонецЦикла; - КонецЕсли; - - Если СтруктураОФ.Свойство("МассивXMLОтчетаAllure") Тогда - МассивXMLОтчетаAllure = СтруктураОФ.МассивXMLОтчетаAllure; - Для каждого Элем Из МассивXMLОтчетаAllure Цикл - ИмяФайлаXML = ПутьКаталогаРодителяОтчетовАллюрСоСлешем + Элем.РеальноеИмяФайла; - ФайлXMLДвоичныеДанные = Элем.ФайлXMLДвоичныеДанные; - ФайлXMLДвоичныеДанные.Записать(ИмяФайлаXML); - - ТекстСообщения = "Файл отчета Allure-report (%1) записан."; - ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайлаXML); - Отладка(ТекстСообщения); - КонецЦикла; - КонецЕсли; - - ТекстСообщения = "Файлы отчетов Allure-report ( %1 ) записаны."; - ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ПутьКаталогаРодителяОтчетовАллюр); - СделатьСообщение(ТекстСообщения); - ЗаписатьСтрокуВТекстовыйЛог(ТекстСообщения); - - Если Объект.ОтображатьОтчетAllureВБраузере Тогда + Если Объект.ДелатьОтчетВФорматеАллюр И Объект.ОтображатьОтчетAllureВБраузере Тогда СоздатьОткрытьОтчетAllureНачало(); КонецЕсли; - КонецЕсли; Если Объект.ДелатьОтчетВФорматеjUnit Тогда СтруктураОФ = Новый Структура; @@ -12240,6 +12254,7 @@ КонецЕсли; РезультатПрохожденияТестовСценария.Вставить("НомерСтрокиВФиче", СтрокаСценария.НомерСтрокиВФиче); + ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария); ОстановитьЗаписьВидеоОдногоШага(); diff --git "a/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Ext/ObjectModule.bsl" "b/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Ext/ObjectModule.bsl" index 9d4ea61df..61aba2eb3 100644 --- "a/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Ext/ObjectModule.bsl" +++ "b/plugins/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/\320\220\320\273\320\273\321\216\321\2002\320\236\321\202\321\207\320\265\321\202/Ext/ObjectModule.bsl" @@ -1,7 +1,6 @@ Перем РезультатыСравненияТаблиц Экспорт; Перем СтатусыРезультатаТестирования Экспорт; Перем ПараметрыОтчетаУФ; -Перем ОтчетВРежимеУФ; Перем ЭтоLinux; Перем ИмяТекущейСборки; Перем ДобавлятьКИмениСценарияУсловияВыгрузки; @@ -23,18 +22,11 @@ Функция ПолучитьРезультатПрохожденияТестовСценария(СтрСтроки) - РезультатПрохожденияТестовСценария = Неопределено; - - Если ОтчетВРежимеУФ Тогда - ИДВМассиве = ПараметрыОтчетаУФ.МассивИДСтрокиДерева.Найти(СтрСтроки.ИДСтроки); - Если ИДВМассиве <> Неопределено Тогда - РезультатПрохожденияТестовСценария = ПараметрыОтчетаУФ.МассивРезультатПрохожденияТестовСценария[ИДВМассиве]; - КонецЕсли; - Иначе - РезультатПрохожденияТестовСценария = СтрСтроки.РезультатПрохожденияТестовСценария; + Если СтрСтроки.ИДСтроки = ПараметрыОтчетаУФ.ИДСтрокиДерева Тогда + Возврат ПараметрыОтчетаУФ.РезультатПрохожденияТестовСценария; КонецЕсли; - Возврат РезультатПрохожденияТестовСценария; + Возврат Неопределено; КонецФункции @@ -563,13 +555,10 @@ Перем СтарыйКаталог, ИмяФайла; - ОтчетВРежимеУФ = Ложь; - Если СтруктураОФ = Неопределено Тогда ВызватьИсключение "Не поддерживаем ОФ"; Иначе ИмяТекущейСборки = ИмяСборки; - ОтчетВРежимеУФ = Истина; ПараметрыОтчетаУФ = СтруктураОФ; ДобавлятьКИмениСценарияУсловияВыгрузки = ДобавлятьКСценариюУсловияВыгрузки;