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

Merge pull request #262 from bia-technologies/feature/255

Поддержка формата Allure
This commit is contained in:
Koryakin Aleksey 2024-02-24 03:06:22 +03:00 committed by GitHub
commit 6018e65368
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
32 changed files with 1403 additions and 375 deletions

View File

@ -1,4 +1,4 @@
# ![Logo](documentation/static/img/logo.png) YAXUnit. Расширение для запуска тестов
# ![Logo](documentation/static/img/logo.png) YAxUnit. Расширение для запуска тестов
----

View File

@ -0,0 +1,6 @@
---
sidebar_position: 0
tags: [Начало]
---
# Возможности

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 140 KiB

View File

@ -5,7 +5,7 @@ tags: [Начало]
# Установка
YAXUnit - это расширение для 1С:Предприятия, которое надо добавить к вашему проекту.
YAxUnit - это расширение для 1С:Предприятия, которое необходимо добавить к вашему проекту.
## Требования

View File

@ -0,0 +1,27 @@
---
sidebar_position: 9
tags: [Начало]
---
# Форматы отчетов о тестировании
YAxUnit поддерживает генерацию отчетов в форматах `JUnit` и `Allure`.
Указать необходимый формат вы может в [параметрах запуска](run/configuration), либо в [форме настроек](yaxunit-ui#интерфейс-настройки-конфигурации).
По умолчанию используется формат `JUnit`.
## Формат `JUnit`
Широко распространенный формат отчетов о тестировании. Используется для интеграции с [плагином запуска тестов из EDT](https://github.com/bia-technologies/edt-test-runner). В отличии от Allure позволяет хранить и сравнивать ожидаемое и фактическое значения. Подходит для процесса разработки/отладки тестов.
## Формат `Allure`
Чаще применяется в CI как более универсальный и удобный способ организации отчетов о тестировании. Позволяет добавлять различную мета информацию, которая будет отображаться в отчете, имеет различные способы группировки, историю запусков и многое другое.
Группировка по тестовым наборам
![Группировка по тестовым наборам](images/allure-report-suites.png)
Группировка по функциональности
![Группировка по функциональности](images/allure-report-behaviors.png)

View File

@ -7,7 +7,7 @@
| Имя параметра | Тип | Значение по умолчанию | Описание |
|-------------------|-----------|-------------------------------------------------|--------------------------------------------------------------------------------------------------------------|
| `filter` | `Object` | [Object, смотрите ниже](#параметры-фильтрации) | Параметры фильтрации, поиска тестов |
| `reportFormat` | `String` | `"jUnit"` | Формат отчета о тестировании, возможные значения: `"jUnit"`, `"JSON"` |
| `reportFormat` | `String` | `"jUnit"` | Формат отчета о тестировании, возможные значения: `"jUnit"`, `"JSON"` , `"allure"` |
| `reportPath` | `String` | `""` | Путь к формируемому отчету, можно указать или каталог (в которому будет создан файл отчета) или путь к файлу |
| `closeAfterTests` | `Boolean` | `True` | Признак закрытия 1С:Предприятие по завершению тестирования |
| `showReport` | `Boolean` | `True` | Открыть форму отчета завершению тестирования |

View File

@ -12,7 +12,7 @@ tags: [Начало]
* Сохранения состояния и обмена данными между тестами используя [контекст](context.md)
* [Подмены](mockito.md) алгоритмов работы системы
* [Предикаты](predicates.md), которые используются во многих механизмах движка
* [Получения данных](queries.md) информационной базы
* Методы [получения данных](queries.md) информационной базы
* [Интерфейс](yaxunit-ui.md) для просмотра отчета и настройки параметров запуска тестов
Доступ к API осуществляется через методы модуля `ЮТест`, например
@ -20,8 +20,6 @@ tags: [Начало]
* `ЮТест.Данные()` для доступа к методам работы с тестовыми данными
* `ЮТест.ОжидаетЧто()` для доступа к утверждения
Планируется расширять существующий API и реализовать нужный недостающий функционал.
:::tip
:::tip
Не рекомендуется обращаться к модулям API напрямую, используйте `ЮТест`
:::

View File

@ -3,7 +3,7 @@ sidebar_position: 0
slug: /
---
# YAXUnit. Расширение для запуска тестов
# YAxUnit. Расширение для запуска тестов
----
@ -20,15 +20,14 @@ slug: /
----
- [YAXUnit. Расширение для запуска тестов](#yaxunit-расширение-для-запуска-тестов)
- [Назначение](#назначение)
- [Возможности](#возможности)
- [Пример тестового модуля](#пример-тестового-модуля)
- [Запуск](#запуск)
- [Запуск из EDT](#запуск-из-edt)
- [Запуск вне EDT](#запуск-вне-edt)
- [Благодарности](#благодарности)
- [Лицензия](#лицензия)
- [Назначение](#назначение)
- [Возможности](#возможности)
- [Пример тестового модуля](#пример-тестового-модуля)
- [Запуск](#запуск)
- [Запуск из EDT](#запуск-из-edt)
- [Запуск вне EDT](#запуск-вне-edt)
- [Благодарности](#благодарности)
- [Лицензия](#лицензия)
## Назначение
@ -36,7 +35,7 @@ slug: /
### Возможности
- YAXUnit - это расширение с открытым исходным кодом, которое используется для написания и выполнения тестов
- YAxUnit - это расширение с открытым исходным кодом, которое используется для написания и выполнения тестов
- Разрабатывалось с оглядкой на JUnit5, пожалуй, лучший фреймворк тестирования
- Предоставляет движок выполнения тестов
- Предоставляет утверждения для проверки ожидаемых результатов

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.
@ -27,73 +27,131 @@
Процедура СформироватьОтчет(РезультатВыполнения, ПараметрыЗапуска, Обработчик) Экспорт
Если НЕ ЗначениеЗаполнено(ПараметрыЗапуска.reportPath) Тогда
ВызватьИсключение "Не указан путь сохранения отчета";
ЮТЛогирование.Ошибка("Не указан путь сохранения отчета");
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Обработчик);
Возврат;
КонецЕсли;
МодульОтчета = МодульФормирования(ПараметрыЗапуска.reportFormat);
ПараметрыФормирования = МодульФормирования(ПараметрыЗапуска.reportFormat);
Если МодульОтчета = Неопределено Тогда
ВызватьИсключение СтрШаблон("Отчет в формате %1 не поддерживается", ПараметрыЗапуска.reportFormat);
Если ПараметрыФормирования = Неопределено Тогда
ЮТЛогирование.Ошибка(СтрШаблон("Отчет в формате `%1` не поддерживается", ПараметрыЗапуска.reportFormat));
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Обработчик);
Возврат;
КонецЕсли;
МодульОтчета = ПараметрыФормирования.Модуль;
Формат = ПараметрыФормирования.Формат;
ПараметрыФормирования = Новый Структура("РезультатВыполнения, ПараметрыЗапуска, Обработчик", РезультатВыполнения, ПараметрыЗапуска, Обработчик);
ПараметрыФормирования.Вставить("МодульОтчета", МодульОтчета);
ПараметрыФормирования.Вставить("Формат", Формат);
ОбработчикПолученияИмениФайла = Новый ОписаниеОповещения("ПослеФормированияИмениФайла", ЭтотОбъект, ПараметрыФормирования);
ИмяФайлаОтчета(ПараметрыФормирования, ОбработчикПолученияИмениФайла);
ПодготовитьИмяФайлаОтчета(ПараметрыФормирования, ОбработчикПолученияИмениФайла);
КонецПроцедуры
// Поддерживаемые форматы отчетов.
//
// Возвращаемое значение:
// Структура - Поддерживаемые форматы отчетов
// + Ключ - Идентификатор формата
// + Значение - см. ЮТФабрика.ОписаниеФорматаОтчета
Функция ПоддерживаемыеФорматыОтчетов() Экспорт
Модули = ЮТРасширения.ГенераторыОтчетов();
Форматы = Новый Структура;
Для Каждого Модуль Из Модули Цикл
Параметры = Модуль.ПараметрыГенерацииОтчета();
ЮТОбщий.ОбъединитьВСтруктуру(Форматы, Параметры.Форматы);
КонецЦикла;
Возврат Форматы;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ИмяФайлаОтчета(ПараметрыФормирования, Обработчик)
Процедура СформироватьОтчетВФормате(РезультатВыполнения, ГенераторОтчета, ИмяФайлаОтчета, Формат, Обработчик)
Если Формат.СамостоятельнаяЗаписьОтчета Тогда
ГенераторОтчета.ЗаписатьОтчет(РезультатВыполнения, ИмяФайлаОтчета, Формат, Обработчик)
Иначе
ДанныеОтчета = ГенераторОтчета.ДанныеОтчета(РезультатВыполнения, Формат);
Если ДанныеОтчета = Неопределено Тогда
ЮТЛогирование.Ошибка("Не удалось получить данные отчета");
Иначе
ДанныеОтчета.Записать(ИмяФайлаОтчета);
КонецЕсли;
КонецЕсли;
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Обработчик);
КонецПроцедуры
Процедура ПодготовитьИмяФайлаОтчета(ПараметрыФормирования, Обработчик)
ПараметрыПроверки = Новый Структура("ПараметрыФормирования, Обработчик", ПараметрыФормирования, Обработчик);
ОбработчикПроверки = Новый ОписаниеОповещения("ПослеПроверкиКаталога", ЭтотОбъект, ПараметрыПроверки);
ЮТФайлы.ЭтоКаталог(ПараметрыФормирования.ПараметрыЗапуска.reportPath, ОбработчикПроверки);
ОбработчикПроверки = Новый ОписаниеОповещения("ПослеПроверкиСуществования", ЭтотОбъект, ПараметрыПроверки);
ЮТФайлы.Существует(ПараметрыФормирования.ПараметрыЗапуска.reportPath, ОбработчикПроверки);
КонецПроцедуры
Функция МодульФормирования(Формат)
Модули = ЮТРасширения.ГенераторыОтчетов();
МодульОтчета = Неопределено;
Для Каждого Модуль Из Модули Цикл
Если Модуль.РеализуетФормат(Формат) Тогда
МодульОтчета = Модуль;
Прервать;
Параметры = Модуль.ПараметрыГенерацииОтчета();
Если Параметры.Форматы.Свойство(Формат) Тогда
Возврат Новый Структура("Модуль, Формат", Модуль, Параметры.Форматы[Формат]);
КонецЕсли;
КонецЦикла;
Возврат МодульОтчета;
Возврат Неопределено;
КонецФункции
Процедура ПослеФормированияИмениФайла(ИмяФайлаОтчета, Параметры) Экспорт
Процедура ПослеПроверкиСуществования(Существует, Параметры) Экспорт
ДанныеОтчета = Параметры.МодульОтчета.ДанныеОтчета(Параметры.РезультатВыполнения);
Если ДанныеОтчета = Неопределено Тогда
ВызватьИсключение "Не удалось получить данные отчета";
Иначе
ДанныеОтчета.Записать(ИмяФайлаОтчета);
ПутьКОтчету = Параметры.ПараметрыФормирования.ПараметрыЗапуска.reportPath;
Если Существует Тогда
ОбработчикПроверки = Новый ОписаниеОповещения("ПослеПроверкиКаталога", ЭтотОбъект, Параметры);
ЮТФайлы.ЭтоКаталог(ПутьКОтчету, ОбработчикПроверки);
Возврат
КонецЕсли;
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Параметры.Обработчик);
Формат = Параметры.ПараметрыФормирования.Формат;
Если Формат.ЗаписьВКаталог Тогда
НачатьСозданиеКаталога(Новый ОписаниеОповещения("ПослеСозданияКаталогаОтчета", ЭтотОбъект, Параметры), ПутьКОтчету);
Иначе
ПослеПроверкиКаталога(Ложь, Параметры);
КонецЕсли;
КонецПроцедуры
Процедура ПослеСозданияКаталогаОтчета(ИмяКаталога, Параметры) Экспорт
ПослеПроверкиКаталога(Истина, Параметры);
КонецПроцедуры
Процедура ПослеПроверкиКаталога(ЭтоКаталог, Параметры) Экспорт
ПутьКОтчету = Параметры.ПараметрыФормирования.ПараметрыЗапуска.reportPath;
Если ЭтоКаталог Тогда
ИмяФайла = ЮТФайлы.ОбъединитьПути(ПутьКОтчету, Параметры.ПараметрыФормирования.МодульОтчета.ИмяФайлаПоУмолчанию());
Формат = Параметры.ПараметрыФормирования.Формат;
Если НЕ Формат.ЗаписьВКаталог И ЭтоКаталог Тогда
ИмяФайла = ЮТФайлы.ОбъединитьПути(ПутьКОтчету, Формат.ИмяФайлаПоУмолчанию);
Иначе
ИмяФайла = ПутьКОтчету;
КонецЕсли;
@ -102,4 +160,10 @@
КонецПроцедуры
Процедура ПослеФормированияИмениФайла(ИмяФайлаОтчета, Параметры) Экспорт
СформироватьОтчетВФормате(Параметры.РезультатВыполнения, Параметры.МодульОтчета, ИмяФайлаОтчета, Параметры.Формат, Параметры.Обработчик);
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,252 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// 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 2 (json)");
ОписаниеФормата.ЗаписьВКаталог = Истина;
ОписаниеФормата.СамостоятельнаяЗаписьОтчета = Истина;
Параметры.Форматы.Вставить(ОписаниеФормата.Идентификатор, ОписаниеФормата);
Возврат Параметры;
КонецФункции
Процедура ЗаписатьОтчет(РезультатВыполнения, Каталог, Формат, Обработчик) Экспорт
#Если ВебКлиент Тогда
ВызватьИсключение "Формирование отчета в формате Allure не поддерживается в web-клиенте";
#Иначе
Для Каждого Модуль Из РезультатВыполнения Цикл
Для Каждого Набор Из Модуль.НаборыТестов Цикл
Для Каждого РезультатТеста Из Набор.Тесты Цикл
Попытка
СохранитьОтчетТеста(РезультатТеста, Набор, Модуль, Каталог);
Исключение
ЮТЛогирование.Ошибка("Ошибка сохранения отчета в формате Allure. " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЦикла;
КонецЦикла;
КонецЦикла;
#КонецЕсли
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьОбработчик(Обработчик);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Если НЕ ВебКлиент Тогда
Процедура СохранитьОтчетТеста(РезультатТеста, Набор, Модуль, Каталог)
Статусы = ЮТФабрика.СтатусыИсполненияТеста();
ПредставлениеРежима = СтрШаблон(" [%1]", РезультатТеста.Режим);
ПолныйИдентификаторТеста = СтрШаблон("%1_%2_%3", РезультатТеста.НомерВНаборе, РезультатТеста.ПолноеИмяМетода, РезультатТеста.Режим);
Описание = НовыйОписаниеТеста();
Описание.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 = Эпик;
Описание.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.
@ -18,15 +18,16 @@
#Область СлужебныйПрограммныйИнтерфейс
Функция РеализуетФормат(ФорматОтчета) Экспорт
Функция ПараметрыГенерацииОтчета() Экспорт
Возврат СтрСравнить(ФорматОтчета, "json") = 0;
Параметры = ЮТФабрика.ПараметрыГенератораОтчета();
КонецФункции
Функция ИмяФайлаПоУмолчанию() Экспорт
ОписаниеФормата = ЮТФабрика.ОписаниеФорматаОтчета("dumpjson", "Дамп результата тестирования в json");
ОписаниеФормата.ИмяФайлаПоУмолчанию = "report.json";
ОписаниеФормата.ФильтрВыбораФайла = "Дамп результата тестирования (*.json)|*.json";
Параметры.Форматы.Вставить(ОписаниеФормата.Идентификатор, ОписаниеФормата);
Возврат "report.json";
Возврат Параметры;
КонецФункции
@ -34,10 +35,10 @@
//
// Параметры:
// РезультатВыполнения - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
//
// Формат - см. ЮТФабрика.ОписаниеФорматаОтчета
// Возвращаемое значение:
// ДвоичныеДанные - Данные отчета
Функция ДанныеОтчета(РезультатВыполнения) Экспорт
Функция ДанныеОтчета(РезультатВыполнения, Формат) Экспорт
#Если ВебКлиент Тогда
ВызватьИсключение "Формирование отчета в формате JSON не поддерживается в web-клиенте";

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.
@ -18,15 +18,16 @@
#Область СлужебныйПрограммныйИнтерфейс
Функция РеализуетФормат(ФорматОтчета) Экспорт
Функция ПараметрыГенерацииОтчета() Экспорт
Возврат СтрСравнить(ФорматОтчета, "jUnit") = 0;
Параметры = ЮТФабрика.ПараметрыГенератораОтчета();
КонецФункции
Функция ИмяФайлаПоУмолчанию() Экспорт
ОписаниеФормата = ЮТФабрика.ОписаниеФорматаОтчета("jUnit", "JUnit");
ОписаниеФормата.ИмяФайлаПоУмолчанию = "junit.xml";
ОписаниеФормата.ФильтрВыбораФайла = "jUnit(*.xml)|*.xml";
Параметры.Форматы.Вставить(ОписаниеФормата.Идентификатор, ОписаниеФормата);
Возврат "junit.xml";
Возврат Параметры;
КонецФункции
@ -34,10 +35,11 @@
//
// Параметры:
// РезультатВыполнения - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
//
// Формат - см. ЮТФабрика.ОписаниеФорматаОтчета
//
// Возвращаемое значение:
// ДвоичныеДанные - Данные отчета
Функция ДанныеОтчета(Знач РезультатВыполнения) Экспорт
Функция ДанныеОтчета(Знач РезультатВыполнения, Формат) Экспорт
Возврат СформироватьОтчетОТестировании(РезультатВыполнения);
@ -54,7 +56,7 @@
// РезультатТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
// Возвращаемое значение:
// ДвоичныеДанные - полученный отчет
Функция СформироватьОтчетОТестировании(РезультатТестирования) Экспорт
Функция СформироватьОтчетОТестировании(РезультатТестирования)
Поток = Новый ПотокВПамяти();
ЗаписьXML = Новый ЗаписьXML;
@ -76,7 +78,7 @@
КонецЦикла;
ЗаписатьСвойства(ЗаписьXML, Новый Структура("executor, reportDate", "BIA YAXUnit", ТекущаяДатаСеанса()));
ЗаписатьСвойства(ЗаписьXML, Новый Структура("executor, reportDate", "BIA YAxUnit", ТекущаяДатаСеанса()));
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.Закрыть();
@ -153,6 +155,7 @@
КонецЦикла;
Если РезультатТеста.Ошибки.Количество() = 0 И РезультатТеста.Статус <> Статусы.Успешно Тогда
Если РезультатТеста.Статус = Статусы.Ожидание Тогда
ЗаписьXML.ЗаписатьНачалоЭлемента("skipped");
@ -161,11 +164,12 @@
Иначе
Для Каждого ОписаниеОшибки Из РезультатТеста.Ошибки Цикл
ЗаписатьОшибку(ЗаписьXML, ОписаниеОшибки);
КонецЦикла;
ЗаписьXML.ЗаписатьНачалоЭлемента("error");
ЗаписьXML.ЗаписатьАтрибут("message", "Тест не успешен, но нет сообщений об ошибках");
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЕсли;
КонецЕсли;
ЗаписьXML.ЗаписатьКонецЭлемента();

View File

@ -84,8 +84,7 @@
КонецЕсли;
Тест = ОписаниеТеста(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, Контексты);
Набор.Тесты.Добавить(Тест);
Контекст.ТекущийЭлемент = Тест;
ДобавитьТестВНабор(Контекст, Тест);
Возврат ЮТТесты;
@ -274,9 +273,7 @@
Если Контекст.ТекущийЭлемент.Параметры <> Неопределено Тогда
НоваяНастройка = ЮТОбщий.СкопироватьСтруктуру(Контекст.ТекущийЭлемент);
Контекст.ТекущийНабор.Тесты.Добавить(НоваяНастройка);
Контекст.ТекущийЭлемент = НоваяНастройка;
ДобавитьТестВНабор(Контекст, НоваяНастройка);
КонецЕсли;
Контекст.ТекущийЭлемент.Параметры = Параметры;
@ -459,6 +456,14 @@
КонецФункции
Процедура ДобавитьТестВНабор(Контекст, Тест)
Контекст.ТекущийНабор.Тесты.Добавить(Тест);
Контекст.ТекущийЭлемент = Тест;
Тест.НомерВНаборе = Контекст.ТекущийНабор.Тесты.Количество();
КонецПроцедуры
#Область Контекст
Функция Контекст()

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.
@ -263,6 +263,7 @@
// * КонтекстВызова - Массив из Строка - Контексты исполнения теста
// * НастройкиВыполнения- Структура - Настройки исполнения теста
// * Параметры - Неопределено, Массив из Произвольный - Параметры теста
// * НомерВНаборе - Число - Порядковый номер теста в наборе
Функция ОписаниеТеста(Имя, Представление, КонтекстыВызова, Знач ТегиСтрокой = "") Экспорт
Если ТегиСтрокой = Неопределено Тогда
@ -276,6 +277,7 @@
Описание.Вставить("КонтекстВызова", КонтекстыВызова);
Описание.Вставить("НастройкиВыполнения", Новый Структура());
Описание.Вставить("Параметры", Неопределено);
Описание.Вставить("НомерВНаборе", 0);
Возврат Описание;
@ -368,7 +370,8 @@
// * Статус - Строка - Статус выполнения теста, см. СтатусыИсполненияТеста
// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки - Описания ошибок выполнения теста, см. ЮТФабрика.ОписаниеВозникшейОшибки
// * НастройкиВыполнения- Структура - Настройки исполнения теста
// * Параметры - см. ПредставлениеТеста
// * Параметры - Неопределено, Массив из Произвольный - Набор параметров теста
// * НомерВНаборе - Число - Порядковый номер теста в наборе
Функция ОписаниеИсполняемогоТеста(Тест, Режим, ТестовыйМодуль) Экспорт
ПолноеИмяМетода = СтрШаблон("%1.%2", ТестовыйМодуль.МетаданныеМодуля.Имя, Тест.Имя);
@ -386,6 +389,7 @@
ОписаниеТеста.Вставить("Ошибки", Новый Массив);
ОписаниеТеста.Вставить("НастройкиВыполнения", Тест.НастройкиВыполнения);
ОписаниеТеста.Вставить("Параметры", Тест.Параметры);
ОписаниеТеста.Вставить("НомерВНаборе", Тест.НомерВНаборе);
//@skip-check constructor-function-return-section
Возврат ОписаниеТеста;
@ -411,7 +415,7 @@
// * ПодключатьВнешниеКомпоненты - Булево - Выполнять установку и подключение внешних компонент при старте.
// Если выключено и включен запрет синхронных вызовов, то компоненты не будут доступы в тонком клиенте.
// Если выключено и разрешены синхронные вызовы, то компоненты можно установить вручную и тогда они будут доступны на клиенте.
Функция ПараметрыЗапуска() Экспорт
Функция ПараметрыЗапуска() Экспорт
Параметры = Новый Структура;
@ -560,7 +564,7 @@
Описание.Вставить("Тест", Тест);
//@skip-check constructor-function-return-section
Возврат Описание;
Возврат Описание;
КонецФункции
@ -863,6 +867,50 @@
КонецФункции
// Параметры генератора отчета.
// Описывает предоставляемые модулем форматы отчетов
//
// Возвращаемое значение:
// Структура - Параметры генератора отчета:
// * Форматы - Структура - Форматы отчетов, предоставляемые модулем
Функция ПараметрыГенератораОтчета() Экспорт
Параметры = Новый Структура();
Параметры.Вставить("Форматы", Новый Структура);
Возврат Параметры;
КонецФункции
// Описание формата отчета.
//
// Параметры:
// Идентификатор - Строка - Уникальный идентификатор формата отчета
// Представление - Строка - Пользовательское представление отчета, выводится в форму настроек тестирования
//
// Возвращаемое значение:
// Структура - Описание формата отчета:
// * Идентификатор - Строка - Уникальный идентификатор формата отчета
// * Представление - Строка - Пользовательское представление отчета, выводится в форму настроек тестирования
// * ЗаписьВКаталог - Булево - Отчет записывается в каталог, в этом случае должен быть установлен призак `СамостоятельнаяЗаписьОтчета`
// * ФильтрВыбораФайла - Строка - Фильтр выбора, используется в форме настроек тестирования
// * ИмяФайлаПоУмолчанию - Строка - Для отчетов, записываемых в файл, имя файла если в параметрах указан каталог
// * СамостоятельнаяЗаписьОтчета - Булево - Способ записи отчета в файлы.
// Истина - Модуль формирования отчета самостоятельно записывает отчет
// Ложь - Модуль формирования отчета генерирует данные, которые записываются движком
Функция ОписаниеФорматаОтчета(Идентификатор, Представление) Экспорт
Описание = Новый Структура();
Описание.Вставить("Идентификатор", Идентификатор);
Описание.Вставить("Представление", Представление);
Описание.Вставить("ЗаписьВКаталог", Ложь);
Описание.Вставить("ФильтрВыбораФайла", "");
Описание.Вставить("ИмяФайлаПоУмолчанию", "");
Описание.Вставить("СамостоятельнаяЗаписьОтчета", Ложь);
Возврат Описание;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции

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,55 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// 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.ПараметрыГенерацииОтчета();
ЮТест.ОжидаетЧто(Параметры)
.Свойство("Форматы")
.ИмеетДлину(1)
.ИмеетСвойство("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

@ -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.
@ -93,7 +93,7 @@
Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска);
ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
.ИмеетДлину(26);
.ИмеетДлину(28);
КонецПроцедуры

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>