1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-02-10 19:41:26 +02:00

Реализован перезапуск тестов из отчета

This commit is contained in:
alkoleft 2023-08-10 02:50:35 +03:00
parent 7a81596068
commit f5959c7fab
9 changed files with 159 additions and 106 deletions

View File

@ -115,7 +115,9 @@
ЮТОбщий.ДополнитьМассив(Результаты, ПропущенныеНаборы);
Возврат Результаты;
ТестовыйМодульОблегченный.НаборыТестов = Результаты;
Возврат ТестовыйМодульОблегченный;
КонецФункции
@ -146,23 +148,17 @@
Возврат;
КонецЕсли;
ЮТСобытия.Инициализация(ПараметрыЗапуска);
ВызватьСледующийОбработчик(ДополнительныеПараметры);
КонецПроцедуры
Процедура ОбработчикЗагрузитьТесты(Результат, ДополнительныеПараметры) Экспорт
Параметры = ДополнительныеПараметры.ПараметрыЗапуска;
ЮТКонтекст.ИнициализироватьКонтекст();
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(Параметры.settings);
ЮТСобытия.Инициализация(Параметры);
// Повторно сохраним для передачи на сервер
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекст.ГлобальныеНастройкиВыполнения());
ЮТКонтекст.УстановитьКонтекстИсполнения(ЮТФабрика.НовыйКонтекстИсполнения());
ЮТСобытия.ПередЧтениеСценариев();
ТестовыеМодули = ЮТЧитатель.ЗагрузитьТесты(Параметры);
ТестовыеМодули = ЮТЧитатель.ЗагрузитьТесты(ДополнительныеПараметры.ПараметрыЗапуска);
ЮТСобытия.ПослеЧтенияСценариев(ТестовыеМодули);
ИсполняемыеТестовыеМодули = Новый Массив();
@ -189,7 +185,7 @@
Для Каждого ТестовыйМодуль Из ДополнительныеПараметры.ИсполняемыеТестовыеМодули Цикл
РезультатыПрогонаМодуля = ВыполнитьТестыМодуля(ТестовыйМодуль);
ЮТОбщий.ДополнитьМассив(РезультатыТестирования, РезультатыПрогонаМодуля);
РезультатыТестирования.Добавить(РезультатыПрогонаМодуля);
КонецЦикла;
@ -240,6 +236,25 @@
#КонецОбласти
#Область ОбработчикиСобытий
Процедура Инициализация(Параметры) Экспорт
ЮТКонтекст.ИнициализироватьКонтекст();
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(Параметры.settings);
// Повторно сохраним для передачи на сервер
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекст.ГлобальныеНастройкиВыполнения());
КонецПроцедуры
Процедура ПередВыполнениемТестов(ИсполняемыеМодули) Экспорт
ЮТКонтекст.УстановитьКонтекстИсполнения(ЮТФабрика.НовыйКонтекстИсполнения());
КонецПроцедуры
#КонецОбласти
Процедура ВызватьСледующийОбработчик(ПараметрыИсполнения, Результат = Неопределено)
Обработчик = СледующийОбработчик(ПараметрыИсполнения);
@ -347,7 +362,7 @@
Процедура ПоказатьОтчет(РезультатыТестирования, Параметры)
Данные = Новый Структура("РезультатыТестирования, ПараметрыЗапуска", РезультатыТестирования, Параметры);
АдресДанных = ПоместитьВоВременноеХранилище(Данные);
АдресДанных = ПоместитьВоВременноеХранилище(Данные, Новый УникальныйИдентификатор());
ОткрытьФорму("Обработка.ЮТЮнитТесты.Форма.Основная", Новый Структура("АдресХранилища", АдресДанных));
@ -356,7 +371,7 @@
// Записать код возврата.
//
// Параметры:
// РезультатыТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
// РезультатыТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
// Параметры - см. ЮТФабрика.ПараметрыЗапуска
Процедура ЗаписатьКодВозврата(РезультатыТестирования, Параметры)
@ -366,20 +381,28 @@
Возврат;
КонецЕсли;
Для Каждого Набор Из РезультатыТестирования Цикл
Для Каждого Модуль Из РезультатыТестирования Цикл
Если ЗначениеЗаполнено(Набор.Ошибки) Тогда
Успешно = Ложь;
Прервать;
КонецЕсли;
Для Каждого Тест Из Набор.Тесты Цикл
Для Каждого Набор Из Модуль.НаборыТестов Цикл
Если ЗначениеЗаполнено(Тест.Ошибки) Тогда
Если ЗначениеЗаполнено(Набор.Ошибки) Тогда
Успешно = Ложь;
Прервать;
КонецЕсли;
Для Каждого Тест Из Набор.Тесты Цикл
Если ЗначениеЗаполнено(Тест.Ошибки) Тогда
Успешно = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если НЕ Успешно Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если НЕ Успешно Тогда

View File

@ -230,6 +230,10 @@
Процедура ПослеКаждогоТеста(ОписаниеСобытия) Экспорт
Контекст = Контекст();
Если НЕ ЛогированиеВключено(Контекст) Тогда
Возврат;
КонецЕсли;
ЮТОбщий.Инкремент(Контекст.КоличествоВыполненныхТестов);
Информация(СтрШаблон("%1 Завершен тест `%2`", Прогресс(), ОписаниеСобытия.Тест.Имя));
@ -251,9 +255,12 @@
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
Процедура ПослеВсехТестов(ОписаниеСобытия) Экспорт
Контекст = Контекст();
Если НЕ ЛогированиеВключено(Контекст) Тогда
Возврат;
КонецЕсли;
#Если Клиент Тогда
Прогресс = Контекст().КоличествоВыполненныхТестов;
ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования() + ".КоличествоВыполненныхТестов", Прогресс, Истина);
ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования() + ".КоличествоВыполненныхТестов", Контекст.КоличествоВыполненныхТестов, Истина);
#КонецЕсли
Информация(СтрШаблон("Завершен модуль `%1`", ОписаниеСобытия.Модуль.МетаданныеМодуля.ПолноеИмя));
@ -312,6 +319,16 @@
#Область Запись
Функция ЛогированиеВключено(Знач Контекст = Неопределено, Приоритет = Неопределено)
Если Контекст = Неопределено Тогда
Контекст = Контекст();
КонецЕсли;
Возврат Контекст <> Неопределено И Контекст.Включено И (Приоритет = Неопределено ИЛИ Контекст.УровеньЛога > Приоритет);
КонецФункции
Функция НакопленныеСообщенияЛогирования(Очистить = Ложь) Экспорт
Контекст = Контекст();
@ -329,7 +346,7 @@
Процедура Записать(УровеньЛога, Сообщение, Приоритет)
Контекст = Контекст();
Если Контекст = Неопределено ИЛИ НЕ Контекст.Включено ИЛИ Контекст.УровеньЛога > Приоритет Тогда
Если НЕ ЛогированиеВключено(Контекст, Приоритет) Тогда
Возврат;
КонецЕсли;

View File

@ -21,7 +21,7 @@
// СформироватьОтчет
// Формирует отчет о результатах тестирования по заданным параметрам
// Параметры:
// РезультатВыполнения - Массив - Коллекция результатов выполнения, каждый элемент - структура, см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
// РезультатВыполнения - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
// ПараметрыЗапуска - Структура - Параметры запуска, см. ЮТФабрика.ПараметрыЗапуска
// Обработчик - ОписаниеОповещения
Процедура СформироватьОтчет(РезультатВыполнения, ПараметрыЗапуска, Обработчик) Экспорт

View File

@ -30,6 +30,13 @@
КонецФункции
// Формирует отчет в формате JSON
//
// Параметры:
// РезультатВыполнения - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
//
// Возвращаемое значение:
// ДвоичныеДанные - Данные отчета
Функция ДанныеОтчета(РезультатВыполнения) Экспорт
#Если ВебКлиент Тогда

View File

@ -30,6 +30,13 @@
КонецФункции
// Формирует отчет в формате jUnit
//
// Параметры:
// РезультатВыполнения - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
//
// Возвращаемое значение:
// ДвоичныеДанные - Данные отчета
Функция ДанныеОтчета(Знач РезультатВыполнения) Экспорт
Возврат СформироватьОтчетОТестировании(РезультатВыполнения);
@ -44,7 +51,7 @@
// Формирует отчет (xml-файл) и возвращает его в виде двоичных данных
//
// Параметры:
// РезультатТестирования - Массив - результаты всех сценариев теста
// РезультатТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
// Возвращаемое значение:
// ДвоичныеДанные - полученный отчет
Функция СформироватьОтчетОТестировании(РезультатТестирования) Экспорт
@ -58,9 +65,15 @@
Номер = 0;
Для Каждого Набор Из РезультатТестирования Цикл
ЗаписатьНабор(ЗаписьXML, Набор, Номер);
Номер = Номер + 1;
Для Каждого Модуль Из РезультатТестирования Цикл
Для Каждого Набор Из Модуль.НаборыТестов Цикл
ЗаписатьНабор(ЗаписьXML, Набор, Номер);
Номер = Номер + 1;
КонецЦикла;
КонецЦикла;
ЗаписатьСвойства(ЗаписьXML, Новый Структура("executor, reportDate", "BIA YAXUnit", ТекущаяДатаСеанса()));

View File

@ -155,13 +155,21 @@
КонецПроцедуры
Процедура ПередВыполнениемТестов(КоллекцияНаборовТестов) Экспорт
// Перед выполнением тестов.
//
// Параметры:
// ИсполняемыеМодули - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
Процедура ПередВыполнениемТестов(ИсполняемыеМодули) Экспорт
Параметры = ЮТОбщий.ЗначениеВМассиве(КоллекцияНаборовТестов);
Параметры = ЮТОбщий.ЗначениеВМассиве(ИсполняемыеМодули);
ВызватьОбработчикРасширения("ПередВыполнениемТестов", Параметры);
КонецПроцедуры
// После выполнения тестов.
//
// Параметры:
// РезультатТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
Процедура ПослеВыполненияТестов(РезультатТестирования) Экспорт
Параметры = ЮТОбщий.ЗначениеВМассиве(РезультатТестирования);

View File

@ -1661,10 +1661,10 @@
</additionalColumns>
</attributes>
<attributes>
<name>АдресДанных</name>
<name>АдресОтчета</name>
<title>
<key>ru</key>
<value>Адрес данных</value>
<value>Адрес отчета</value>
</title>
<id>16</id>
<valueType>

View File

@ -21,6 +21,9 @@
&НаКлиенте
Перем ИсполняемыеТестовыеМодули;
&НаКлиенте
Перем ПараметрыЗапускаТестирования;
#КонецОбласти
#Область ОбработчикиСобытийФормы
@ -30,7 +33,7 @@
Если Параметры.Свойство("АдресХранилища") И ЭтоАдресВременногоХранилища(Параметры.АдресХранилища) Тогда
ОтобразитьРезультатыТестирования(Параметры.АдресХранилища);
АдресОтчета = Параметры.АдресХранилища;
КонецЕсли;
@ -41,7 +44,10 @@
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЗагрузитьТестыПриОткрытии Тогда
Если ЗначениеЗаполнено(АдресОтчета) Тогда
ДанныеОтчета = ДанныеОтчета(АдресОтчета);
ПослеЗагрузкиТестов(ДанныеОтчета.РезультатыТестирования, ДанныеОтчета.ПараметрыЗапуска);
ИначеЕсли ЗагрузитьТестыПриОткрытии Тогда
ЗагрузитьТесты();
КонецЕсли;
@ -49,10 +55,6 @@
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоТестов
&НаКлиенте
@ -148,66 +150,15 @@
#Область ВыводОтчета
&НаСервере
Процедура ОтобразитьРезультатыТестирования(АдресХранилища)
&НаСервереБезКонтекста
Функция ДанныеОтчета(Знач АдресХранилища)
Данные = ПолучитьИзВременногоХранилища(АдресХранилища);
УдалитьИзВременногоХранилища(АдресХранилища);
РезультатТестирования = Данные.РезультатыТестирования;
Статусы = ЮТФабрика.СтатусыИсполненияТеста();
Возврат Данные;
ОбщаяСтатистика = Статистика();
Для Каждого Набор Из РезультатТестирования Цикл
СтрокаНабора = ДеревоТестов.ПолучитьЭлементы().Добавить();
СтрокаНабора.Набор = Истина;
СтрокаНабора.Представление = Набор.Представление;
СтрокаНабора.Контекст = НормализоватьКонтекст(Набор.Режим);
СтрокаНабора.ПредставлениеВремяВыполнения = ЮТОбщий.ПредставлениеПродолжительности(Набор.Длительность);
СтрокаНабора.ВремяВыполнения = Набор.Длительность / 1000;
СтрокаНабора.ТипОбъекта = 2;
ЗаполнитьОшибки(СтрокаНабора, Набор);
СтатистикаНабора = Статистика();
Для Каждого Тест Из Набор.Тесты Цикл
СтрокаТеста = СтрокаНабора.ПолучитьЭлементы().Добавить();
ОтобразитьРезультатТеста(СтрокаТеста, Тест, Набор);
ИнкрементСтатистики(СтатистикаНабора, Тест.Статус, Статусы);
КонецЦикла;
Если СтатистикаНабора.Сломано Тогда
СтрокаНабора.Состояние = Статусы.Сломан;
ИначеЕсли СтатистикаНабора.Упало Тогда
СтрокаНабора.Состояние = Статусы.Ошибка;
ИначеЕсли СтатистикаНабора.Пропущено Тогда
СтрокаНабора.Состояние = Статусы.Пропущен;
ИначеЕсли СтатистикаНабора.Неизвестно Тогда
СтрокаНабора.Состояние = Статусы.Ошибка;
Иначе
СтрокаНабора.Состояние = Статусы.Успешно;
КонецЕсли;
СтрокаНабора.Прогресс = ГрафическоеПредставлениеСтатистики(СтатистикаНабора);
СтрокаНабора.Иконка = КартинкаСтатуса(СтрокаНабора.Состояние);
Для Каждого Элемент Из СтатистикаНабора Цикл
ЮТОбщий.Инкремент(ОбщаяСтатистика[Элемент.Ключ], Элемент.Значение);
КонецЦикла;
КонецЦикла;
Элементы.СтатистикаВыполнения.Заголовок = ПредставлениеСтатистики(ОбщаяСтатистика);
КонецПроцедуры
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОтобразитьРезультатТеста(СтрокаТеста, Тест, Набор)
@ -248,6 +199,7 @@
Статистика.Вставить("Упало", 0);
Статистика.Вставить("Сломано", 0);
Статистика.Вставить("Пропущено", 0);
Статистика.Вставить("Ожидание", 0);
Статистика.Вставить("Неизвестно", 0);
Возврат Статистика;
@ -290,6 +242,10 @@
ЮТОбщий.Инкремент(Статистика.Пропущено);
ИначеЕсли Статус = Статусы.Ожидание Тогда
ЮТОбщий.Инкремент(Статистика.Ожидание);
Иначе
ЮТОбщий.Инкремент(Статистика.Неизвестно);
@ -427,11 +383,13 @@
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗагрузкиТестов(Результат, ПараметрыЗагрузки) Экспорт
Процедура ПослеЗагрузкиТестов(Результат, ПараметрыЗапуска) Экспорт
ИсполняемыеТестовыеМодули = Результат;
ПараметрыЗапускаТестирования = ПараметрыЗапуска;
Статусы = ЮТФабрика.СтатусыИсполненияТеста();
ОбщаяСтатистика = Статистика();
Для Каждого ТестовыйМодуль Из ИсполняемыеТестовыеМодули Цикл
@ -441,30 +399,52 @@
СтрокаНабора.Набор = Истина;
СтрокаНабора.Представление = Набор.Представление;
СтрокаНабора.Контекст = НормализоватьКонтекст(Набор.Режим);
СтрокаНабора.ПредставлениеВремяВыполнения = ЮТОбщий.ПредставлениеПродолжительности(Набор.Длительность);
СтрокаНабора.ВремяВыполнения = Набор.Длительность / 1000;
СтрокаНабора.ТипОбъекта = 2;
ЗаполнитьОшибки(СтрокаНабора, Набор);
Набор.Вставить("Идентификатор", СтрокаНабора.ПолучитьИдентификатор());
СтатистикаНабора = Статистика();
Для Каждого Тест Из Набор.Тесты Цикл
СтрокаТеста = СтрокаНабора.ПолучитьЭлементы().Добавить();
СтрокаТеста.Представление = Тест.Имя;
СтрокаТеста.Контекст = НормализоватьКонтекст(Набор.Режим);
СтрокаТеста.Состояние = Тест.Статус;
СтрокаТеста.ТипОбъекта = 3;
СтрокаТеста.Иконка = КартинкаСтатуса(Тест.Статус);
ЗаполнитьОшибки(СтрокаТеста, Тест);
ОтобразитьРезультатТеста(СтрокаТеста, Тест, Набор);
ИнкрементСтатистики(СтатистикаНабора, Тест.Статус, Статусы);
Тест.Вставить("Идентификатор", СтрокаТеста.ПолучитьИдентификатор());
КонецЦикла;
СтрокаНабора.Состояние = Статусы.Ожидание;
Если СтатистикаНабора.Сломано Тогда
СтрокаНабора.Состояние = Статусы.Сломан;
ИначеЕсли СтатистикаНабора.Упало Тогда
СтрокаНабора.Состояние = Статусы.Ошибка;
ИначеЕсли СтатистикаНабора.Пропущено Тогда
СтрокаНабора.Состояние = Статусы.Пропущен;
ИначеЕсли СтатистикаНабора.Неизвестно Тогда
СтрокаНабора.Состояние = Статусы.Ошибка;
ИначеЕсли СтатистикаНабора.Ожидание Тогда
СтрокаНабора.Состояние = Статусы.Ожидание;
Иначе
СтрокаНабора.Состояние = Статусы.Успешно;
КонецЕсли;
СтрокаНабора.Прогресс = ГрафическоеПредставлениеСтатистики(СтатистикаНабора);
СтрокаНабора.Иконка = КартинкаСтатуса(СтрокаНабора.Состояние);
Для Каждого Элемент Из СтатистикаНабора Цикл
ЮТОбщий.Инкремент(ОбщаяСтатистика[Элемент.Ключ], Элемент.Значение);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
@ -476,11 +456,14 @@
&НаКлиенте
Процедура ВыполнитьТестовыеМодули(Модули)
ЮТСобытия.Инициализация(ПараметрыЗапускаТестирования);
ЮТСобытия.ПослеФормированияИсполняемыхНаборовТестов(Модули);
ЮТСобытия.ПередВыполнениемТестов(Модули);
Для Каждого Модуль Из Модули Цикл
Результат = ЮТИсполнительКлиент.ВыполнитьТестыМодуля(Модуль);
Для Каждого Набор Из Результат Цикл
Для Каждого Набор Из Результат.НаборыТестов Цикл
Для Каждого Тест Из Набор.Тесты Цикл
@ -493,6 +476,8 @@
КонецЦикла;
ЮТКонтекст.УдалитьКонтекст();
КонецПроцедуры
&НаКлиенте

View File

@ -8,7 +8,7 @@
<includeHelpInContents>true</includeHelpInContents>
<includeInCommandInterface>true</includeInCommandInterface>
<content>CommonModule.МокитоСлужебный</content>
<content>CommonModule.ЮТКлиентТестирования</content>
<content>CommonModule.ЮТИсполнительКлиент</content>
<content>CommonModule.ЮТЛогирование</content>
<content>CommonModule.ЮТТестовыеДанныеСлужебный</content>
<content>CommonModule.ЮТУтверждения</content>