1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-02-13 19:42:02 +02:00
Реализация вывода отчета в формате Allure 2
Рефакторинг работы с отчетами
Рефакторинг формы настройки параметров запуска
This commit is contained in:
alkoleft 2024-02-23 19:55:55 +03:00
parent b53b6e72ff
commit 1d5de77bdf
20 changed files with 1248 additions and 321 deletions

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -40,7 +40,7 @@
Значение = ЮТОбщийВызовСервера.ИзХранилищаЗначений(Значение);
#Иначе
Значение = Значение.Получить();
#КонецЕсли
#КонецЕсли
КонецЕсли;
Если ТипЗнч(Часть) = Тип("Число") И Часть < 0 И ТипЗнч(Значение) <> Тип("Соответствие") Тогда
@ -55,6 +55,12 @@
КонецФункции
Функция ХешMD5(Данные) Экспорт
Возврат ЮТОбщийВызовСервера.ХешMD5(Данные);
КонецФункции
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -115,6 +115,14 @@
КонецФункции
Функция ХешMD5(Строка) Экспорт
Хеш = Новый ХешированиеДанных(ХешФункция.MD5);
Хеш.Добавить(Строка);
Возврат НРег(СтрЗаменить(Хеш.ХешСумма, " ", ""));
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -36,14 +36,37 @@
ВызватьИсключение СтрШаблон("Отчет в формате %1 не поддерживается", ПараметрыЗапуска.reportFormat);
КонецЕсли;
ПараметрыФормирования = Новый Структура("РезультатВыполнения, ПараметрыЗапуска, Обработчик", РезультатВыполнения, ПараметрыЗапуска, Обработчик);
ПараметрыФормирования.Вставить("МодульОтчета", МодульОтчета);
ПараметрыГенератора = МодульОтчета.ПараметрыГенерацииОтчета();
ОбработчикПолученияИмениФайла = Новый ОписаниеОповещения("ПослеФормированияИмениФайла", ЭтотОбъект, ПараметрыФормирования);
ИмяФайлаОтчета(ПараметрыФормирования, ОбработчикПолученияИмениФайла);
Если ПараметрыГенератора.СамостоятельнаяЗаписьОтчета Тогда
МодульОтчета.ЗаписатьОтчет(РезультатВыполнения, ПараметрыЗапуска.reportPath, Обработчик);
Иначе
ПараметрыФормирования = Новый Структура("РезультатВыполнения, ПараметрыЗапуска, Обработчик", РезультатВыполнения, ПараметрыЗапуска, Обработчик);
ПараметрыФормирования.Вставить("МодульОтчета", МодульОтчета);
ПараметрыФормирования.Вставить("ПараметрыГенерацииОтчета", ПараметрыГенератора);
ОбработчикПолученияИмениФайла = Новый ОписаниеОповещения("ПослеФормированияИмениФайла", ЭтотОбъект, ПараметрыФормирования);
ИмяФайлаОтчета(ПараметрыФормирования, ОбработчикПолученияИмениФайла);
КонецЕсли;
КонецПроцедуры
Функция ПоддерживаемыеФорматыОтчетов() Экспорт
Модули = ЮТРасширения.ГенераторыОтчетов();
Форматы = Новый Структура;
Для Каждого Модуль Из Модули Цикл
Параметры = Модуль.ПараметрыГенерацииОтчета();
ЮТОбщий.ОбъединитьВСтруктуру(Форматы, Параметры.Форматы);
КонецЦикла;
Возврат Форматы;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@ -93,7 +116,7 @@
ПутьКОтчету = Параметры.ПараметрыФормирования.ПараметрыЗапуска.reportPath;
Если ЭтоКаталог Тогда
ИмяФайла = ЮТФайлы.ОбъединитьПути(ПутьКОтчету, Параметры.ПараметрыФормирования.МодульОтчета.ИмяФайлаПоУмолчанию());
ИмяФайла = ЮТФайлы.ОбъединитьПути(ПутьКОтчету, Параметры.ПараметрыФормирования.ПараметрыГенерацииОтчета.ИмяФайлаПоУмолчанию);
Иначе
ИмяФайла = ПутьКОтчету;
КонецЕсли;

View File

@ -0,0 +1,237 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
#Область СлужебныйПрограммныйИнтерфейс
Функция РеализуетФормат(ФорматОтчета) Экспорт
Возврат СтрСравнить(ФорматОтчета, "allure") = 0 Или СтрСравнить(ФорматОтчета, "allurezip") = 0;
КонецФункции
Функция ПараметрыГенерацииОтчета() Экспорт
Параметры = ЮТФабрика.ПараметрыГенератораОтчета();
Параметры.СамостоятельнаяЗаписьОтчета = Истина;
ОписаниеФормата = ЮТФабрика.ОписаниеФорматаОтчета("allure", "Allure 2 (json)");
ОписаниеФормата.ЗаписьВКаталог = Истина;
Параметры.Форматы.Вставить(ОписаниеФормата.Идентификатор, ОписаниеФормата);
ОписаниеФормата = ЮТФабрика.ОписаниеФорматаОтчета("allurezip", "Архив отчетов Allure 2 (zip)");
ОписаниеФормата.ИмяФайлаПоУмолчанию = "allure-report.zip";
ОписаниеФормата.ФильтрВыбораФайла = "Архив отчетов Allure (*.zip)|*.zip";
Параметры.Форматы.Вставить(ОписаниеФормата.Идентификатор, ОписаниеФормата);
Возврат Параметры;
КонецФункции
Процедура ЗаписатьОтчет(РезультатВыполнения, Каталог, Обработчик) Экспорт
#Если ВебКлиент Тогда
ВызватьИсключение "Формирование отчета в формате Allure не поддерживается в web-клиенте";
#Иначе
Для Каждого Модуль Из РезультатВыполнения Цикл
Для Каждого Набор Из Модуль.НаборыТестов Цикл
Для Каждого РезультатТеста Из Набор.Тесты Цикл
СохранитьОтчетТеста(РезультатТеста, Набор, Модуль, Каталог);
КонецЦикла;
КонецЦикла;
КонецЦикла;
#КонецЕсли
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Обработчик);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Если НЕ ВебКлиент Тогда
Процедура СохранитьОтчетТеста(РезультатТеста, Набор, Модуль, Каталог)
Статусы = ЮТФабрика.СтатусыИсполненияТеста();
Описание = НовыйОписаниеТеста();
Описание.fullName = РезультатТеста.ПолноеИмяМетода;
Описание.name = РезультатТеста.Имя;
Описание.status = СтатусОтчета(РезультатТеста.Статус, Статусы);
Описание.testCaseId = ЮТОбщий.ХешMD5(РезультатТеста.ПолноеИмяМетода);
Описание.start = РезультатТеста.ДатаСтарта;
Описание.stop = РезультатТеста.ДатаСтарта + РезультатТеста.Длительность;
ОписаниеМодуля = ИмяМодуляПоСхеме(Модуль.МетаданныеМодуля.Имя);
ПолныйИдентификаторТеста = РезультатТеста.ПолноеИмяМетода + РезультатТеста.Режим;
ДобавитьМетку(Описание, "language", "bsl");
ДобавитьМетку(Описание, "framework", "YAxUnit");
Если ЗначениеЗаполнено(ОписаниеМодуля.epic) Тогда
ДобавитьМетку(Описание, "epic", ОписаниеМодуля.epic);
КонецЕсли;
Если ЗначениеЗаполнено(ОписаниеМодуля.feature) Тогда
ДобавитьМетку(Описание, "feature", ОписаниеМодуля.feature);
КонецЕсли;
Если ЗначениеЗаполнено(ОписаниеМодуля.story) Тогда
ДобавитьМетку(Описание, "story", ОписаниеМодуля.story);
КонецЕсли;
ДобавитьМетку(Описание, "suite", Модуль.МетаданныеМодуля.Имя);
Если Модуль.НаборыТестов.Количество() > 1 ИЛИ Модуль.МетаданныеМодуля.Имя <> Набор.Представление Тогда
ДобавитьМетку(Описание, "subSuite", Набор.Представление);
КонецЕсли;
ДобавитьМетку(Описание, "tag", РезультатТеста.Режим);
Для Каждого Тег Из РезультатТеста.Теги Цикл
ДобавитьМетку(Описание, "tag", Тег);
КонецЦикла;
Если ЗначениеЗаполнено(РезультатТеста.Параметры) Тогда
Для Каждого Параметр Из РезультатТеста.Параметры Цикл
Описание.parameters.Добавить(Новый Структура("name, value", "П" + Описание.parameters.Количество(), Строка(Параметр)));
ПолныйИдентификаторТеста = ПолныйИдентификаторТеста + Строка(Параметр);
КонецЦикла;
КонецЕсли;
Описание.historyId = ЮТОбщий.ХешMD5(ПолныйИдентификаторТеста);
Для Каждого ОписаниеОшибки Из РезультатТеста.Ошибки Цикл
Описание.statusDetails.message = ЮТОбщий.ДобавитьСтроку(Описание.statusDetails.message, ОписаниеОшибки.Сообщение, Символы.ПС);
Описание.statusDetails.trace = ЮТОбщий.ДобавитьСтроку(Описание.statusDetails.trace, ОписаниеОшибки.Стек, Символы.ПС);
КонецЦикла;
Если РезультатТеста.Ошибки.Количество() = 0 И РезультатТеста.Статус <> Статусы.Успешно Тогда
Если РезультатТеста.Статус = Статусы.Ожидание Тогда
Описание.statusDetails.message = "Тест не был вызван";
Иначе
Описание.statusDetails.message = "Тест не успешен, но нет сообщений об ошибках"
КонецЕсли;
КонецЕсли;
ИмяФайла = ЮТФайлы.ОбъединитьПути(Каталог, Описание.uuid + "-result.json");
Запись = Новый ЗаписьJSON();
Запись.ОткрытьФайл(ИмяФайла, КодировкаТекста.UTF8, Ложь);
ЗаписатьJSON(Запись, Описание);
Запись.Закрыть();
КонецПроцедуры
Функция НовыйОписаниеТеста()
Описание = Новый Структура;
Описание.Вставить("uuid", ЮТТестовыеДанные.УникальнаяСтрока());
Описание.Вставить("historyId", "");
Описание.Вставить("testCaseId", "");
Описание.Вставить("fullName", "");
Описание.Вставить("name", "");
Описание.Вставить("parameters", Новый Массив());
Описание.Вставить("links", Новый Массив());
Описание.Вставить("labels", Новый Массив());
Описание.Вставить("status", "");
Описание.Вставить("statusDetails", НовыйОписаниеСтатуса());
Описание.Вставить("start", 0);
Описание.Вставить("stop", 0);
Описание.Вставить("steps", Новый Массив());
Возврат Описание;
КонецФункции
Функция НовыйОписаниеСтатуса()
Описание = Новый Структура();
Описание.Вставить("message");
Описание.Вставить("trace");
Возврат Описание;
КонецФункции
Функция СтатусОтчета(Статус, Статусы)
Если Статус = Статусы.Успешно Тогда
СтатусОтчета = "passed";
ИначеЕсли Статус = Статусы.Ошибка Тогда
СтатусОтчета = "failed";
ИначеЕсли Статус = Статусы.Пропущен Тогда
СтатусОтчета = "skipped";
Иначе
СтатусОтчета = "broken";
КонецЕсли;
Возврат СтатусОтчета;
КонецФункции
Процедура ДобавитьМетку(ОписаниеТеста, ИмяМетки, Значение)
ОписаниеТеста.labels.Добавить(Новый Структура("name, value", ИмяМетки, Значение));
КонецПроцедуры
Функция ИмяМодуляПоСхеме(ИмяМодуля) Экспорт
Части = СтрРазделить(ИмяМодуля, "_");
Описание = Новый Структура("epic, feature, story");
Если Части.Количество() <> 2 И Части.Количество() <> 3 Тогда
Описание.epic = ИмяМодуля;
Возврат Описание;
КонецЕсли;
Префикс = Части[0];
Если Префикс = "ОМ" Тогда Эпик = "Общий модуль";
ИначеЕсли Префикс = "РБ" Тогда Эпик = "Регистр бухгалтерии";
ИначеЕсли Префикс = "РН" Тогда Эпик = "Регистр накопления";
ИначеЕсли Префикс = "РР" Тогда Эпик = "Регистр расчета";
ИначеЕсли Префикс = "РС" Тогда Эпик = "Регистр сведений";
ИначеЕсли Префикс = "БП" Тогда Эпик = "Бизнес процесс";
ИначеЕсли Префикс = "Спр" Тогда Эпик = "Справочник";
ИначеЕсли Префикс = "ПС" Тогда Эпик = "План счетов";
ИначеЕсли Префикс = "ПВР" Тогда Эпик = "План видов расчета";
ИначеЕсли Префикс = "ПВХ" Тогда Эпик = "План видов характеристик";
ИначеЕсли Префикс = "Док" Тогда Эпик = "Документ";
ИначеЕсли Префикс = "Пер" Тогда Эпик = "Перечисление";
ИначеЕсли Префикс = "ПО" Тогда Эпик = "План обмена";
ИначеЕсли Префикс = "Зад" Тогда Эпик = "Задача";
ИначеЕсли Префикс = "Обр" Тогда Эпик = "Обработка";
ИначеЕсли Префикс = "Отч" Тогда Эпик = "Отчет";
КонецЕсли;
Описание.epic = Эпик;
Если Части.Количество() >= 2 Тогда
Описание.feature = Части[1];
КонецЕсли;
Если Части.Количество() = 3 Тогда
Описание.story = Части[2];
КонецЕсли;
Возврат Описание;
КонецФункции
#КонецЕсли
#КонецОбласти

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="7126a7d9-4afd-4a54-8e1b-191773cfc65b">
<name>ЮТОтчетAllure</name>
<synonym>
<key>ru</key>
<value>Отчет allure</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -20,13 +20,20 @@
Функция РеализуетФормат(ФорматОтчета) Экспорт
Возврат СтрСравнить(ФорматОтчета, "json") = 0;
Возврат СтрСравнить(ФорматОтчета, "dumpjson") = 0;
КонецФункции
Функция ИмяФайлаПоУмолчанию() Экспорт
Функция ПараметрыГенерацииОтчета() Экспорт
Возврат "report.json";
Параметры = ЮТФабрика.ПараметрыГенератораОтчета();
ОписаниеФормата = ЮТФабрика.ОписаниеФорматаОтчета("dumpjson", "Дамп результата тестирования в json");
ОписаниеФормата.ИмяФайлаПоУмолчанию = "report.json";
ОписаниеФормата.ФильтрВыбораФайла = "Дамп результата тестирования (*.json)|*.json";
Параметры.Форматы.Вставить(ОписаниеФормата.Идентификатор, ОписаниеФормата);
Возврат Параметры;
КонецФункции

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -24,12 +24,18 @@
КонецФункции
Функция ИмяФайлаПоУмолчанию() Экспорт
Функция ПараметрыГенерацииОтчета() Экспорт
Возврат "junit.xml";
Параметры = ЮТФабрика.ПараметрыГенератораОтчета();
ОписаниеФормата = ЮТФабрика.ОписаниеФорматаОтчета("jUnit", "JUnit");
ОписаниеФормата.ИмяФайлаПоУмолчанию = "junit.xml";
ОписаниеФормата.ФильтрВыбораФайла = "jUnit(*.xml)|*.xml";
Параметры.Форматы.Вставить(ОписаниеФормата.Идентификатор, ОписаниеФормата);
Возврат Параметры;
КонецФункции
// Формирует отчет в формате jUnit
//
// Параметры:
@ -54,7 +60,7 @@
// РезультатТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
// Возвращаемое значение:
// ДвоичныеДанные - полученный отчет
Функция СформироватьОтчетОТестировании(РезультатТестирования) Экспорт
Функция СформироватьОтчетОТестировании(РезультатТестирования)
Поток = Новый ПотокВПамяти();
ЗаписьXML = Новый ЗаписьXML;
@ -153,6 +159,7 @@
КонецЦикла;
Если РезультатТеста.Ошибки.Количество() = 0 И РезультатТеста.Статус <> Статусы.Успешно Тогда
Если РезультатТеста.Статус = Статусы.Ожидание Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("skipped");
@ -161,11 +168,12 @@
Иначе
Для Каждого ОписаниеОшибки Из РезультатТеста.Ошибки Цикл
ЗаписатьОшибку(ЗаписьXML, ОписаниеОшибки);
КонецЦикла;
ЗаписьXML.ЗаписатьНачалоЭлемента("error");
ЗаписьXML.ЗаписатьАтрибут("message", "Тест не успешен, но нет сообщений об ошибках");
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЕсли;
КонецЕсли;
ЗаписьXML.ЗаписатьКонецЭлемента();

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -368,7 +368,7 @@
// * Статус - Строка - Статус выполнения теста, см. СтатусыИсполненияТеста
// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки - Описания ошибок выполнения теста, см. ЮТФабрика.ОписаниеВозникшейОшибки
// * НастройкиВыполнения- Структура - Настройки исполнения теста
// * Параметры - см. ПредставлениеТеста
// * Параметры - Неопределено, Массив из Произвольный - Набор параметров теста
Функция ОписаниеИсполняемогоТеста(Тест, Режим, ТестовыйМодуль) Экспорт
ПолноеИмяМетода = СтрШаблон("%1.%2", ТестовыйМодуль.МетаданныеМодуля.Имя, Тест.Имя);
@ -411,7 +411,7 @@
// * ПодключатьВнешниеКомпоненты - Булево - Выполнять установку и подключение внешних компонент при старте.
// Если выключено и включен запрет синхронных вызовов, то компоненты не будут доступы в тонком клиенте.
// Если выключено и разрешены синхронные вызовы, то компоненты можно установить вручную и тогда они будут доступны на клиенте.
Функция ПараметрыЗапуска() Экспорт
Функция ПараметрыЗапуска() Экспорт
Параметры = Новый Структура;
@ -560,7 +560,7 @@
Описание.Вставить("Тест", Тест);
//@skip-check constructor-function-return-section
Возврат Описание;
Возврат Описание;
КонецФункции
@ -863,6 +863,29 @@
КонецФункции
Функция ПараметрыГенератораОтчета() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("СамостоятельнаяЗаписьОтчета", Ложь);
Параметры.Вставить("ИмяФайлаПоУмолчанию", Неопределено);
Параметры.Вставить("Форматы", Новый Структура);
Возврат Параметры;
КонецФункции
Функция ОписаниеФорматаОтчета(Идентификатор, Представление) Экспорт
Описание = Новый Структура();
Описание.Вставить("Идентификатор", Идентификатор);
Описание.Вставить("Представление", Представление);
Описание.Вставить("ЗаписьВКаталог", Ложь);
Описание.Вставить("ФильтрВыбораФайла", "");
Описание.Вставить("ИмяФайлаПоУмолчанию", "");
Возврат Описание;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции

View File

@ -82,6 +82,7 @@
<commonModules>CommonModule.ЮТОбщий</commonModules>
<commonModules>CommonModule.ЮТОбщийВызовСервера</commonModules>
<commonModules>CommonModule.ЮТОтчет</commonModules>
<commonModules>CommonModule.ЮТОтчетAllure</commonModules>
<commonModules>CommonModule.ЮТОтчетJSON</commonModules>
<commonModules>CommonModule.ЮТОтчетJUnit</commonModules>
<commonModules>CommonModule.ЮТПараметрыЗапуска</commonModules>

View File

@ -414,294 +414,6 @@
<items xsi:type="form:FormGroup">
<name>ГруппаПараметрыЗапуска</name>
<id>43</id>
<items xsi:type="form:FormField">
<name>ОтобразитьОтчет</name>
<id>69</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ОтобразитьОтчет</segments>
</dataPath>
<extendedTooltip>
<name>ОтобразитьОтчетРасширеннаяПодсказка</name>
<id>71</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ОтобразитьОтчетКонтекстноеМеню</name>
<id>70</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаФайлы</name>
<id>75</id>
<items xsi:type="form:FormField">
<name>ИмяФайлаОтчета</name>
<id>81</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаОтчета</segments>
</dataPath>
<extendedTooltip>
<name>ИмяФайлаОтчетаРасширеннаяПодсказка</name>
<id>83</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИмяФайлаОтчетаКонтекстноеМеню</name>
<id>82</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>ИмяФайлаОтчетаНачалоВыбора</name>
</handlers>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<choiceButton>true</choiceButton>
<clearButton>true</clearButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ВыводЛога</name>
<id>26</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаЛога</segments>
</dataPath>
<extendedTooltip>
<name>ВыводЛогаРасширеннаяПодсказка</name>
<id>68</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВыводЛогаКонтекстноеМеню</name>
<id>67</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>ВыводЛогаНачалоВыбора</name>
</handlers>
<wrap>true</wrap>
<choiceButton>true</choiceButton>
<clearButton>true</clearButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ИмяФайлаКодаВозврата</name>
<id>72</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаКодаВозврата</segments>
</dataPath>
<extendedTooltip>
<name>ИмяФайлаКодаВозвратаРасширеннаяПодсказка</name>
<id>74</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИмяФайлаКодаВозвратаКонтекстноеМеню</name>
<id>73</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>ИмяФайлаКодаВозвратаНачалоВыбора</name>
</handlers>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<choiceButton>true</choiceButton>
<clearButton>true</clearButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Вывод в файл</value>
</title>
<extendedTooltip>
<name>ГруппаФайлыРасширеннаяПодсказка</name>
<id>76</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЛогированиеВКонсоль</name>
<id>84</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ЛогированиеВКонсоль</segments>
</dataPath>
<extendedTooltip>
<name>ЛогированиеВКонсольРасширеннаяПодсказка</name>
<id>86</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЛогированиеВКонсольКонтекстноеМеню</name>
<id>85</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>ФайлКонфигурации</name>
<id>55</id>
@ -762,6 +474,574 @@
<textEdit>true</textEdit>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаОтчеты</name>
<id>75</id>
<items xsi:type="form:FormField">
<name>ОтобразитьОтчет</name>
<id>27</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ОтобразитьОтчет</segments>
</dataPath>
<extendedTooltip>
<name>ОтобразитьОтчетРасширеннаяПодсказка</name>
<id>71</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ОтобразитьОтчетКонтекстноеМеню</name>
<id>70</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>ФорматОтчета</name>
<id>87</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ФорматОтчета</segments>
</dataPath>
<extendedTooltip>
<name>ФорматОтчетаРасширеннаяПодсказка</name>
<id>89</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ФорматОтчетаКонтекстноеМеню</name>
<id>88</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>RadioButtonField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:RadioButtonsFieldExtInfo">
<radioButtonsType>Tumbler</radioButtonsType>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ИмяФайлаОтчета</name>
<id>81</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаОтчета</segments>
</dataPath>
<extendedTooltip>
<name>ИмяФайлаОтчетаРасширеннаяПодсказка</name>
<id>83</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИмяФайлаОтчетаКонтекстноеМеню</name>
<id>82</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>ИмяФайлаОтчетаНачалоВыбора</name>
</handlers>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<choiceButton>true</choiceButton>
<clearButton>true</clearButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Отчет по результатам тестирования</value>
</title>
<extendedTooltip>
<name>ГруппаОтчетыРасширеннаяПодсказка</name>
<id>76</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>true</showTitle>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаПараметрыЗапускаСтрока1</name>
<id>94</id>
<items xsi:type="form:FormGroup">
<name>ГруппаЛогирование</name>
<id>90</id>
<items xsi:type="form:FormField">
<name>УровеньЛога</name>
<id>100</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>УровеньЛога</segments>
</dataPath>
<extendedTooltip>
<name>УровеньЛогаРасширеннаяПодсказка</name>
<id>102</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>УровеньЛогаКонтекстноеМеню</name>
<id>101</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<listChoiceMode>true</listChoiceMode>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
<choiceList>
<presentation>
<key>ru</key>
<value>Отладка</value>
</presentation>
<value xsi:type="core:StringValue">
<value>debug</value>
</value>
</choiceList>
<choiceList>
<presentation>
<key>ru</key>
<value>Информация</value>
</presentation>
<value xsi:type="core:StringValue">
<value>info</value>
</value>
</choiceList>
<choiceList>
<presentation>
<key>ru</key>
<value>Ошибки</value>
</presentation>
<value xsi:type="core:StringValue">
<value>error</value>
</value>
</choiceList>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ВыводЛога</name>
<id>26</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаЛога</segments>
</dataPath>
<extendedTooltip>
<name>ВыводЛогаРасширеннаяПодсказка</name>
<id>28</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ВыводЛогаКонтекстноеМеню</name>
<id>29</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>ВыводЛогаНачалоВыбора</name>
</handlers>
<wrap>true</wrap>
<choiceButton>true</choiceButton>
<clearButton>true</clearButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
</extInfo>
</items>
<items xsi:type="form:FormField">
<name>ЛогированиеВКонсоль</name>
<id>84</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ЛогированиеВКонсоль</segments>
</dataPath>
<extendedTooltip>
<name>ЛогированиеВКонсольРасширеннаяПодсказка</name>
<id>86</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЛогированиеВКонсольКонтекстноеМеню</name>
<id>85</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Логирование</value>
</title>
<extendedTooltip>
<name>ГруппаЛогированиеРасширеннаяПодсказка</name>
<id>91</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>true</showTitle>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаПрочее</name>
<id>92</id>
<items xsi:type="form:FormField">
<name>ЗакрытьПослеТестирования</name>
<id>103</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ЗакрытьПослеТестирования</segments>
</dataPath>
<extendedTooltip>
<name>ЗакрытьПослеТестированияРасширеннаяПодсказка</name>
<id>105</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ЗакрытьПослеТестированияКонтекстноеМеню</name>
<id>104</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>CheckBoxField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
</items>
<items xsi:type="form:FormField">
<name>ИмяФайлаКодаВозврата</name>
<id>72</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<dataPath xsi:type="form:DataPath">
<segments>ИмяФайлаКодаВозврата</segments>
</dataPath>
<toolTip>
<key>ru</key>
<value>В файл будет записан статус тестирования. 0 - тестирование завершилось успешно, отличное от 0 - были ошибки.</value>
</toolTip>
<toolTipRepresentation>ShowBottom</toolTipRepresentation>
<extendedTooltip>
<name>ИмяФайлаКодаВозвратаРасширеннаяПодсказка</name>
<id>74</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<contextMenu>
<name>ИмяФайлаКодаВозвратаКонтекстноеМеню</name>
<id>73</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<autoFill>true</autoFill>
</contextMenu>
<type>InputField</type>
<editMode>Enter</editMode>
<showInHeader>true</showInHeader>
<headerHorizontalAlign>Left</headerHorizontalAlign>
<showInFooter>true</showInFooter>
<extInfo xsi:type="form:InputFieldExtInfo">
<handlers>
<event>StartChoice</event>
<name>ИмяФайлаКодаВозвратаНачалоВыбора</name>
</handlers>
<autoMaxHeight>true</autoMaxHeight>
<wrap>true</wrap>
<choiceButton>true</choiceButton>
<clearButton>true</clearButton>
<chooseType>true</chooseType>
<typeDomainEnabled>true</typeDomainEnabled>
<textEdit>true</textEdit>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Прочее</value>
</title>
<extendedTooltip>
<name>ГруппаПрочееРасширеннаяПодсказка</name>
<id>93</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<representation>WeakSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>true</showTitle>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Группа параметры запуска строка1</value>
</title>
<extendedTooltip>
<name>ГруппаПараметрыЗапускаСтрока1РасширеннаяПодсказка</name>
<id>95</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<throughAlign>Auto</throughAlign>
<currentRowUse>DontUse</currentRowUse>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаНастройкиЗапуска</name>
<id>53</id>
@ -925,7 +1205,7 @@
<type>UsualGroup</type>
<extInfo xsi:type="form:UsualGroupExtInfo">
<group>Vertical</group>
<representation>WeakSeparation</representation>
<representation>NormalSeparation</representation>
<showLeftMargin>true</showLeftMargin>
<united>true</united>
<showTitle>true</showTitle>
@ -1057,7 +1337,7 @@
<name>ФайлКонфигурации</name>
<title>
<key>ru</key>
<value>Файл конфигурации</value>
<value>Файл конфигурации запуска</value>
</title>
<id>9</id>
<valueType>
@ -1178,7 +1458,7 @@
<name>ИмяФайлаОтчета</name>
<title>
<key>ru</key>
<value>Отчет</value>
<value>Сохранить отчет в</value>
</title>
<id>65</id>
<valueType>
@ -1212,6 +1492,59 @@
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ФорматОтчета</name>
<title>
<key>ru</key>
<value>Формат отчета</value>
</title>
<id>67</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>УровеньЛога</name>
<title>
<key>ru</key>
<value>Уровень лога</value>
</title>
<id>68</id>
<valueType>
<types>String</types>
<stringQualifiers/>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<attributes>
<name>ЗакрытьПослеТестирования</name>
<title>
<key>ru</key>
<value>Закрыть 1С:Предприятие по окончанию тестирования</value>
</title>
<id>69</id>
<valueType>
<types>Boolean</types>
</valueType>
<view>
<common>true</common>
</view>
<edit>
<common>true</common>
</edit>
</attributes>
<formCommands>
<name>УстановитьФлажки</name>
<title>

View File

@ -1,6 +1,6 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -16,12 +16,22 @@
//
//©///////////////////////////////////////////////////////////////////////////©//
#Область ОписаниеПеременных
&НаКлиенте
Перем ПоддерживаемыеФорматыОтчетов;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОтобразитьОтчет = Истина;
Конфигурация = ЮТФабрика.ПараметрыЗапуска();
ФорматОтчета = Конфигурация.reportFormat;
УровеньЛога = Конфигурация.logging.level;
ОтобразитьОтчет = Конфигурация.showReport;
ЗакрытьПослеТестирования = Конфигурация.closeAfterTests;
ЛогированиеВКонсоль = Конфигурация.logging.console ;
КонецПроцедуры
@ -30,6 +40,11 @@
ЗаполнитьДеревоТестов();
ПоддерживаемыеФорматыОтчетов = ЮТОтчет.ПоддерживаемыеФорматыОтчетов();
Для Каждого Формат Из ПоддерживаемыеФорматыОтчетов Цикл
Элементы.ФорматОтчета.СписокВыбора.Добавить(Формат.Ключ, Формат.Значение.Представление);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
@ -74,7 +89,17 @@
&НаКлиенте
Процедура ИмяФайлаОтчетаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыбратьФайл("jUnit(*.xml)|*.xml|All files(*.*)|*.*", ИмяФайлаЛога, Новый ОписаниеОповещения("УстановитьИмяФайлаОтчета", ЭтотОбъект));
ОписаниеФормата = Неопределено;
Если НЕ ПоддерживаемыеФорматыОтчетов.Свойство(ФорматОтчета, ОписаниеФормата) Тогда
ПоказатьПредупреждение(, "Сначала укажите формат отчета");
Возврат;
КонецЕсли;
Если ОписаниеФормата.ЗаписьВКаталог Тогда
ВыбратьКаталог(ИмяФайлаОтчета, Новый ОписаниеОповещения("УстановитьИмяФайлаОтчета", ЭтотОбъект));
Иначе
ВыбратьФайл(ОписаниеФормата.ФильтрВыбораФайла, ИмяФайлаОтчета, Новый ОписаниеОповещения("УстановитьИмяФайлаОтчета", ЭтотОбъект));
КонецЕсли;
КонецПроцедуры
@ -404,6 +429,19 @@
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьКаталог(ИмяФайла, Оповещение)
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
ДиалогВыбораФайла.МножественныйВыбор = Ложь;
ДиалогВыбораФайла.ПолноеИмяФайла = ИмяФайла;
ПараметрыОбработчика = Новый Структура("Оповещение", Оповещение);
Обработчик = Новый ОписаниеОповещения("ПослеВыбораФайла", ЭтотОбъект, ПараметрыОбработчика);
ДиалогВыбораФайла.Показать(Обработчик);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
@ -423,9 +461,11 @@
Конфигурация.Удалить("ВыполнятьМодульноеТестирование");
Конфигурация.showReport = ОтобразитьОтчет;
Конфигурация.closeAfterTests = Истина;
Конфигурация.closeAfterTests = ЗакрытьПослеТестирования;
Конфигурация.reportFormat = ФорматОтчета;
Конфигурация.reportPath = ИмяФайлаОтчета;
Конфигурация.logging.level = УровеньЛога;
Конфигурация.logging.file = ИмяФайлаЛога;
Конфигурация.logging.console = ЛогированиеВКонсоль;

View File

@ -10,6 +10,7 @@
<key>ru</key>
<value>Функциональность формирования отчетов</value>
</explanation>
<content>CommonModule.ЮТОтчетAllure</content>
<content>CommonModule.ЮТОтчетJSON</content>
<content>CommonModule.ЮТОтчетJUnit</content>
<parentSubsystem>Subsystem.ЮТДинамическиПодключаемые</parentSubsystem>

View File

@ -0,0 +1,46 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
#Область СлужебныйПрограммныйИнтерфейс
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты
.ДобавитьТест("СформироватьОтчет_Allure")
;
КонецПроцедуры
Процедура СформироватьОтчет_Allure() Экспорт
РезультатТестирования = ТестовыеДанные.РезультатТестирования();
Каталог = ЮТест.Данные().НовоеИмяВременногоФайла();
СоздатьКаталог(Каталог);
ПараметрыЗапуска = Новый Структура();
ПараметрыЗапуска.Вставить("reportPath", Каталог);
ПараметрыЗапуска.Вставить("reportFormat", "allure");
ЮТОтчет.СформироватьОтчет(РезультатТестирования, ПараметрыЗапуска, Неопределено);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="3b94d6cc-0d16-48b1-9624-fff23f97ec84">
<name>ОМ_ЮТОтчет</name>
<clientManagedApplication>true</clientManagedApplication>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -0,0 +1,60 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
#Область СлужебныйПрограммныйИнтерфейс
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты
.ДобавитьТест("РеализуетФормат")
.ДобавитьТест("ПараметрыГенерацииОтчета")
.ДобавитьТест("ЗаписатьОтчет")
;
КонецПроцедуры
Процедура РеализуетФормат() Экспорт
ЮТест.ОжидаетЧто(ЮТОтчетAllure.РеализуетФормат("allure"))
.ЭтоИстина();
КонецПроцедуры
Процедура ПараметрыГенерацииОтчета() Экспорт
Параметры = ЮТОтчетAllure.ПараметрыГенерацииОтчета();
ЮТест.ОжидаетЧто(Параметры)
.Свойство("СамостоятельнаяЗаписьОтчета").ЭтоИстина();
КонецПроцедуры
Процедура ЗаписатьОтчет() Экспорт
РезультатТестирования = ТестовыеДанные.РезультатТестирования();
Каталог = ЮТест.Данные().НовоеИмяВременногоФайла();
СоздатьКаталог(Каталог);
ЮТОтчетAllure.ЗаписатьОтчет(РезультатТестирования, Каталог);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="dd602322-04b0-42a7-b7a3-7f90b57a4151">
<name>ОМ_ЮТОтчетAllure</name>
<clientManagedApplication>true</clientManagedApplication>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -0,0 +1,98 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
#Область СлужебныйПрограммныйИнтерфейс
Функция РезультатТестирования() Экспорт
Результат = Новый Массив();
Модуль = ОписаниеТестовогоМодуля();
Набор = ОписаниеТестовогоНабора(Модуль);
Тест = ОписаниеТеста(Набор);
Набор.Тесты.Добавить(Тест);
Модуль.НаборыТестов.Добавить(Набор);
Результат.Добавить(Модуль);
Возврат Результат;
КонецФункции
Функция ОписаниеТестовогоМодуля() Экспорт
Описание = Новый Структура();
Описание.Вставить("МетаданныеМодуля", ЮТФабрика.ОписаниеМодуля());
Описание.Вставить("НаборыТестов", Новый Массив);
Описание.Вставить("Ошибки", Новый Массив);
Описание.Вставить("НастройкиВыполнения", Новый Структура);
Описание.МетаданныеМодуля.Имя = ЮТТестовыеДанные.СлучайнаяСтрока();
Описание.МетаданныеМодуля.ПолноеИмя = ЮТТестовыеДанные.СлучайнаяСтрока() + "." + Описание.МетаданныеМодуля.Имя;
Возврат Описание;
КонецФункции
Функция ОписаниеТестовогоНабора(ТестовыйМодуль) Экспорт
Описание = Новый Структура();
Описание.Вставить("Имя", ЮТТестовыеДанные.СлучайнаяСтрока());
Описание.Вставить("Представление", ЮТТестовыеДанные.СлучайнаяСтрока());
Описание.Вставить("Теги", Новый Массив());
Описание.Вставить("Ошибки", Новый Массив());
Описание.Вставить("Режим", "");
Описание.Вставить("ТестовыйМодуль", ТестовыйМодуль);
Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля);
Описание.Вставить("Тесты", Новый Массив);
Описание.Вставить("Выполнять", Истина);
Описание.Вставить("ДатаСтарта", 0);
Описание.Вставить("Длительность", 0);
Описание.Вставить("НастройкиВыполнения", Новый Структура);
Возврат Описание;
КонецФункции
Функция ОписаниеТеста(Набор) Экспорт
ТестовыйМодуль = Набор.ТестовыйМодуль;
ИмяМетода = ЮТТестовыеДанные.СлучайнаяСтрока();
ПолноеИмяМетода = СтрШаблон("%1.%2", ТестовыйМодуль.МетаданныеМодуля.Имя, ИмяМетода);
Представление = ИмяМетода + "()";
ОписаниеТеста = Новый Структура;
ОписаниеТеста.Вставить("Имя", Представление);
ОписаниеТеста.Вставить("Метод", ИмяМетода);
ОписаниеТеста.Вставить("ПолноеИмяМетода", ПолноеИмяМетода);
ОписаниеТеста.Вставить("Теги", Новый Массив);
ОписаниеТеста.Вставить("Режим", Набор.Режим);
ОписаниеТеста.Вставить("ДатаСтарта", 0);
ОписаниеТеста.Вставить("Длительность", 0);
ОписаниеТеста.Вставить("Статус", "Ожидание");
ОписаниеТеста.Вставить("Ошибки", Новый Массив);
ОписаниеТеста.Вставить("НастройкиВыполнения", Новый Структура);
ОписаниеТеста.Вставить("Параметры", Новый Массив);
Возврат ОписаниеТеста;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d00b5da4-add1-43a6-b0d5-6d698ccacd0e">
<name>ТестовыеДанные</name>
<synonym>
<key>ru</key>
<value>Тестовые данные</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -38,6 +38,8 @@
<commonModules>CommonModule.ОМ_ЮТИсполнительКлиентСервер</commonModules>
<commonModules>CommonModule.ОМ_ЮТКонструкторТестовыхДанных</commonModules>
<commonModules>CommonModule.ОМ_ЮТМетаданные</commonModules>
<commonModules>CommonModule.ОМ_ЮТОтчет</commonModules>
<commonModules>CommonModule.ОМ_ЮТОтчетAllure</commonModules>
<commonModules>CommonModule.ОМ_ЮТПодражатель_Банки</commonModules>
<commonModules>CommonModule.ОМ_ЮТПодражатель_Компании</commonModules>
<commonModules>CommonModule.ОМ_ЮТПодражатель_Люди</commonModules>
@ -54,6 +56,7 @@
<commonModules>CommonModule.ПодпискиНаСобытия</commonModules>
<commonModules>CommonModule.Пользователи</commonModules>
<commonModules>CommonModule.ПомощникТестированияВызовСервера</commonModules>
<commonModules>CommonModule.ТестовыеДанные</commonModules>
<catalogs>Catalog.Встречи</catalogs>
<catalogs>Catalog.Товары</catalogs>
<documents>Document.ПриходТовара</documents>