Skip to content

Commit

Permalink
Отчет Allure по мере выполнения сценариев (#399)
Browse files Browse the repository at this point in the history
  • Loading branch information
Infactum authored and artbear committed Feb 1, 2019
1 parent 79a46e6 commit ba88c35
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 62 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10220,6 +10220,15 @@
ВызватьМетодСценарияЕслиОнЕсть(СтрокаСценария, "ПередОкончаниемСценария", , БылаОшибка, ОписаниеОшибки,СлужебныеДанныеСценария);
КонецПроцедуры

&НаКлиенте
Процедура ДействияПослеПолученияРезультатаПрохожденияТестовСценария(Результат)

Если Объект.ДелатьОтчетВФорматеАллюр Тогда
ОтчетАллюр(Результат);
КонецЕсли;

КонецПроцедуры

&НаКлиенте
Функция ПроверитьНаличиеИнструментаДляСозданияСкриншотов()
Если НЕ Объект.СоздаватьИнструкциюHTML и НЕ Объект.ДелатьСкриншотПриВозникновенииОшибки и НЕ Объект.СоздаватьИнструкциюMarkdown Тогда
Expand Down Expand Up @@ -10588,6 +10597,8 @@

ПрекратитьВыполнениШаговТакКакЗакончилсяСценарий = Истина;

ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария);

Если Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда
СделатьСкриншотВозникновенияОшибки(СтрокаШага, СтрокаСценария, РезультатПрохожденияТестовСценария);
Иначе
Expand Down Expand Up @@ -10851,6 +10862,8 @@

РезультатПрохожденияТестовСценария.Вставить("ВремяОкончания", ТекущаяУниверсальнаяДатаВМиллисекундах());

ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария);

Если СтрокаСценария.Статус = "Failed" и Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда
СделатьСкриншотВозникновенияОшибки(СтрокаШага, СтрокаСценария, РезультатПрохожденияТестовСценария);
Иначе
Expand Down Expand Up @@ -11262,6 +11275,8 @@

ПроверитьФлагОстановкаПриВозникновенииОшибки();

ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария);

Если Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда
СделатьСкриншотВозникновенияОшибки(СтрокаШага, СтрокаСценария, РезультатПрохожденияТестовСценария);
Иначе
Expand Down Expand Up @@ -11377,6 +11392,8 @@
ЗаписатьСтрокуВТекстовыйЛог("Failed: " + ОписаниеОшибки);
КонецЕсли;

ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария);

ОстановитьЗаписьВидеоОдногоШага();

Если СтрокаСценария.Статус = "Failed" и Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда
Expand Down Expand Up @@ -11448,6 +11465,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);
Отладка(ТекстСообщения);
ЗаписатьСтрокуВТекстовыйЛог(ТекстСообщения);
КонецЦикла;
КонецЕсли;

КонецФункции

&НаКлиенте
Процедура ДобавитьШагиВРезультатПрохожденияТестовШаговКоторыеНеВыполнялись(Шаги, ТекИД, РезультатПрохожденияТестовШагов)
Ид = ТекИД;
Expand Down Expand Up @@ -11998,56 +12059,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 Тогда
СтруктураОФ = Новый Структура;
Expand Down Expand Up @@ -12246,6 +12260,7 @@
КонецЕсли;

РезультатПрохожденияТестовСценария.Вставить("НомерСтрокиВФиче", СтрокаСценария.НомерСтрокиВФиче);
ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария);

ОстановитьЗаписьВидеоОдногоШага();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
Перем РезультатыСравненияТаблиц Экспорт;
Перем СтатусыРезультатаТестирования Экспорт;
Перем ПараметрыОтчетаУФ;
Перем ОтчетВРежимеУФ;
Перем ЭтоLinux;
Перем ИмяТекущейСборки;
Перем ДобавлятьКИмениСценарияУсловияВыгрузки;
Expand All @@ -23,18 +22,11 @@

Функция ПолучитьРезультатПрохожденияТестовСценария(СтрСтроки)

РезультатПрохожденияТестовСценария = Неопределено;

Если ОтчетВРежимеУФ Тогда
ИДВМассиве = ПараметрыОтчетаУФ.МассивИДСтрокиДерева.Найти(СтрСтроки.ИДСтроки);
Если ИДВМассиве <> Неопределено Тогда
РезультатПрохожденияТестовСценария = ПараметрыОтчетаУФ.МассивРезультатПрохожденияТестовСценария[ИДВМассиве];
КонецЕсли;
Иначе
РезультатПрохожденияТестовСценария = СтрСтроки.РезультатПрохожденияТестовСценария;
Если СтрСтроки.ИДСтроки = ПараметрыОтчетаУФ.ИДСтрокиДерева Тогда
Возврат ПараметрыОтчетаУФ.РезультатПрохожденияТестовСценария;
КонецЕсли;

Возврат РезультатПрохожденияТестовСценария;
Возврат Неопределено;

КонецФункции

Expand Down Expand Up @@ -563,13 +555,10 @@

Перем СтарыйКаталог, ИмяФайла;

ОтчетВРежимеУФ = Ложь;

Если СтруктураОФ = Неопределено Тогда
ВызватьИсключение "Не поддерживаем ОФ";
Иначе
ИмяТекущейСборки = ИмяСборки;
ОтчетВРежимеУФ = Истина;
ПараметрыОтчетаУФ = СтруктураОФ;
ДобавлятьКИмениСценарияУсловияВыгрузки = ДобавлятьКСценариюУсловияВыгрузки;

Expand Down

0 comments on commit ba88c35

Please sign in to comment.