mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2024-11-30 08:36:50 +02:00
Merge pull request #353 from bia-technologies/feature/61
61 / Фильтрация тестов
This commit is contained in:
commit
8a207fbfbc
28
.vscode/settings.json
vendored
28
.vscode/settings.json
vendored
@ -1,8 +1,16 @@
|
||||
{
|
||||
"cSpell.words": [
|
||||
"абвгдеёжзийклмнопрстуфхцчшщъыьэюя",
|
||||
"алиас",
|
||||
"валидировать",
|
||||
"гггг",
|
||||
"гендером",
|
||||
"Дозаполнить",
|
||||
"замокированного",
|
||||
"Инкрементирует",
|
||||
"КоллекцияjUnit",
|
||||
"логирвания",
|
||||
"МассивjUnit",
|
||||
"Ментейнер",
|
||||
"моками",
|
||||
"моки",
|
||||
@ -17,20 +25,40 @@
|
||||
"Мокито",
|
||||
"моков",
|
||||
"Неопределено",
|
||||
"ОКАТО",
|
||||
"Переиспользование",
|
||||
"Повт",
|
||||
"помогаторы",
|
||||
"пресетов",
|
||||
"Регистронезависимое",
|
||||
"релизный",
|
||||
"Сериализатор",
|
||||
"сериализацию",
|
||||
"сериализуемыми",
|
||||
"сериализуемых",
|
||||
"СтрокуjUnit",
|
||||
"СHTTP",
|
||||
"ТИПЗНАЧЕНИЯ",
|
||||
"фейкового",
|
||||
"фейковых",
|
||||
"фича",
|
||||
"Человекочитаемое",
|
||||
"юнит",
|
||||
"ЮТHTTP",
|
||||
"Addin",
|
||||
"autonumber",
|
||||
"bellerage",
|
||||
"BSLLS",
|
||||
"classname",
|
||||
"consructor",
|
||||
"dumpjson",
|
||||
"Functest",
|
||||
"jUnit",
|
||||
"mindmap",
|
||||
"tchk",
|
||||
"testcase",
|
||||
"testsuite",
|
||||
"testsuites",
|
||||
"Wiremock",
|
||||
"XDTO",
|
||||
"yaxunit"
|
||||
|
@ -21,11 +21,10 @@
|
||||
|---------------|---------|-----------------------|------------------------------------------------------------------------------|
|
||||
| `extensions` | `Array` | `["tests"]` | Список имен расширений, из которых грузятся тесты |
|
||||
| `modules` | `Array` | `Null` | Список имен модулей, из которых грузятся тесты |
|
||||
| `tests` | `Array` | `Null` | Список полных путей к исполняемым тестам (`[имя модуля.имя теста]`) |
|
||||
| `suites` | `Array` | `Null` | **Не реализованно.** Список имен тестовых наборов, которые будут запускаться |
|
||||
| `tags` | `Array` | `Null` | **Не реализованно.** Список тегов, которые будут запускаться |
|
||||
| `tests` | `Array` | `Null` | Список полных путей к исполняемым тестам (`[имя модуля.имя теста{.Имя контекста}]`) |
|
||||
| `suites` | `Array` | `Null` | Список имен тестовых наборов, которые будут запускаться |
|
||||
| `tags` | `Array` | `Null` | Список тегов, которые будут запускаться |
|
||||
| `contexts` | `Array` | `Null` | Список имен контекстов исполнения, в которых будут запускаться тесты |
|
||||
| `paths` | `Array` | `Null` | **Не реализованно.** Список полных путей к исполняемым тестам |
|
||||
|
||||
## Параметры логирования
|
||||
|
||||
@ -34,7 +33,7 @@
|
||||
| `file` | `String` | `""` | Путь к файлу лога |
|
||||
| `enable` | `Boolean` | `Null` | Использование логирвания.<br/>Если не указан, зависит от параметра `file` и `console`, если установлены - вкл, если нет - выкл |
|
||||
| `console` | `Boolean` | `false` | Вывод лога в stdout (консоль) |
|
||||
| `level` | `String` | `"debug"` | Уровень детализации лога. Возможные значения: `"debug"`, `"info"`, `"error"` |
|
||||
| `level` | `String` | `"debug"` | Уровень детализации лога. Возможные значения: `"debug"`, `"info"`, `"warning"`, `"error"` |
|
||||
|
||||
Примеры:
|
||||
|
||||
|
@ -1,8 +1,4 @@
|
||||
{
|
||||
"version": 1,
|
||||
"settings": {
|
||||
"common-module-type": {
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
"settings": {}
|
||||
}
|
@ -214,7 +214,7 @@
|
||||
// BSLLS:NumberOfParams-on
|
||||
// BSLLS:NumberOfOptionalParams-on
|
||||
|
||||
// Возврщает идентификатор значения входного параметра по умолчанию.
|
||||
// Возвращает идентификатор значения входного параметра по умолчанию.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
|
@ -37,7 +37,7 @@
|
||||
// ОбщийМодуль - Этот же модуль, для замыкания
|
||||
Функция КоличествоВызовов(ИмяМетода = Неопределено, ПараметрыВызова = Неопределено) Экспорт
|
||||
|
||||
СпозиционироватьсяНаМетоде(ИмяМетода, ПараметрыВызова);
|
||||
ПозиционированиеНаМетоде(ИмяМетода, ПараметрыВызова);
|
||||
|
||||
Возврат МокитоПроверки;
|
||||
|
||||
@ -53,7 +53,7 @@
|
||||
// Массив из см. МокитоСлужебный.СтруктураВызоваМетода - Вызовы метода
|
||||
Функция Вызовы(ИмяМетода = Неопределено, ПараметрыВызова = Неопределено) Экспорт
|
||||
|
||||
СпозиционироватьсяНаМетоде(ИмяМетода, ПараметрыВызова);
|
||||
ПозиционированиеНаМетоде(ИмяМетода, ПараметрыВызова);
|
||||
|
||||
Возврат СтатистикаВызовов();
|
||||
|
||||
@ -249,7 +249,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура СпозиционироватьсяНаМетоде(ИмяМетода = Неопределено, ПараметрыВызова = Неопределено)
|
||||
Процедура ПозиционированиеНаМетоде(ИмяМетода = Неопределено, ПараметрыВызова = Неопределено)
|
||||
|
||||
Параметры = ПараметрыПроверки();
|
||||
|
||||
|
@ -69,7 +69,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращяет записи результат запроса
|
||||
// Возвращает записи результат запроса
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеЗапроса - см. ЮТЗапросы.ОписаниеЗапроса
|
||||
|
@ -70,6 +70,60 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Создает новый массив путем объединения входных.
|
||||
//
|
||||
// Параметры:
|
||||
// Коллекция1 - Массив Из Произвольный
|
||||
// Коллекция2 - Массив Из Произвольный
|
||||
// Коллекция3 - Массив Из Произвольный
|
||||
// Коллекция4 - Массив Из Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из Произвольный - Результат объединения
|
||||
Функция ОбъединитьМассивы(Коллекция1, Коллекция2, Коллекция3 = Неопределено, Коллекция4 = Неопределено) Экспорт
|
||||
|
||||
Коллекции = Новый Массив;
|
||||
Если ЗначениеЗаполнено(Коллекция1) Тогда
|
||||
Коллекции.Добавить(Коллекция1);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Коллекция2) Тогда
|
||||
Коллекции.Добавить(Коллекция2);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Коллекция3) Тогда
|
||||
Коллекции.Добавить(Коллекция3);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Коллекция4) Тогда
|
||||
Коллекции.Добавить(Коллекция4);
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Коллекции) Тогда
|
||||
Возврат Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
Размер = 0;
|
||||
Для Каждого Коллекция Из Коллекции Цикл
|
||||
Размер = Размер + Коллекция.Количество();
|
||||
КонецЦикла;
|
||||
|
||||
Результат = Новый Массив(Размер);
|
||||
Позиция = 0;
|
||||
|
||||
Для Каждого Коллекция Из Коллекции Цикл
|
||||
Размер = Размер + Коллекция.Количество();
|
||||
|
||||
Для Инд = 0 По Коллекция.ВГраница() Цикл
|
||||
Результат[Позиция] = Коллекция[Инд];
|
||||
Позиция = Позиция + 1;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает копию экземпляра указанного объекта.
|
||||
// Примечание:
|
||||
// Функцию нельзя использовать для объектных типов (СправочникОбъект, ДокументОбъект и т.п.).
|
||||
@ -215,7 +269,7 @@
|
||||
//
|
||||
// Параметры:
|
||||
// Коллекция - Произвольный - Итерируемая коллекция
|
||||
// ИмяРеквизита - Строка - Имя реквизата элементов коллекции
|
||||
// ИмяРеквизита - Строка - Имя реквизита элементов коллекции
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из Произвольный
|
||||
@ -391,6 +445,31 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает структуру из массива.
|
||||
// Ключами будут элементы массива, а значением каждого элемента структуры - параметр `ЗначениеСтруктуры`
|
||||
//
|
||||
// Параметры:
|
||||
// Значения - Массив из Строка
|
||||
// ЗначениеСтруктуры - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура
|
||||
Функция МассивВСтруктуру(Значения, ЗначениеСтруктуры = Неопределено) Экспорт
|
||||
|
||||
Результат = Новый Структура();
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Значения) Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Значение Из Значения Цикл
|
||||
Результат.Вставить(Значение, ЗначениеСтруктуры);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -95,7 +95,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Подключает внещнюю компоненту из макета
|
||||
// Подключает внешнюю компоненту из макета
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМакета - Строка - Имя макета, в котором хранится компонента
|
||||
|
@ -206,7 +206,7 @@
|
||||
|<registry xmlns=""http://v8.1c.ru/8.2/addin/registry"">
|
||||
| <component path=""%1"" type=""native""/>
|
||||
|</registry>", ИмяФайла);
|
||||
ИначеЕсли СтрНайти(ДанныеРеестра, СтрШаблон("path=""%1""", ИмяФайла)) <> 0 Тогда // Компонента уже зарегистрированна
|
||||
ИначеЕсли СтрНайти(ДанныеРеестра, СтрШаблон("path=""%1""", ИмяФайла)) <> 0 Тогда // Компонента уже зарегистрирована
|
||||
Возврат Ложь;
|
||||
Иначе // Добавляем компоненту
|
||||
Запись = СтрШаблон(" <component path=""%1"" type=""native""/>", ИмяФайла);
|
||||
|
@ -144,10 +144,9 @@
|
||||
//
|
||||
// Параметры:
|
||||
// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля
|
||||
// ИсполняемыеСценарии - см. ЮТТесты.СценарииМодуля
|
||||
Процедура ПослеЧтенияСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии) Экспорт
|
||||
Процедура ПослеЧтенияСценариевМодуля(ОписаниеТестовогоМодуля) Экспорт
|
||||
|
||||
ЮТЛогирование.Информация(СтрШаблон("Загрузка сценариев модуля завершена `%1`", МетаданныеМодуля.Имя));
|
||||
ЮТЛогирование.Информация(СтрШаблон("Загрузка сценариев модуля завершена `%1`", ОписаниеТестовогоМодуля.МетаданныеМодуля.Имя));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -127,7 +127,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращяет набор регистров движений документа
|
||||
// Возвращает набор регистров движений документа
|
||||
//
|
||||
// Параметры:
|
||||
// Документ - ОбъектМетаданных
|
||||
|
@ -76,7 +76,7 @@
|
||||
// ИмяНастройки - Строка - Имя настройки, см. ЮТФабрика.ПараметрыИсполненияТеста
|
||||
// ЗначениеПоУмолчанию - Произвольный - Значение по умолчанию
|
||||
// СтрогийУровеньИсполнения - Булево - Признак, стоит ли проверять наличие настройки у родительских элементов.
|
||||
// Ложь - По умолчанию, будет выполнен поиск и получение значения для родетелей (набор, модуль), если значения для текущего элемента не установлено.
|
||||
// Ложь - По умолчанию, будет выполнен поиск и получение значения для родителей (набор, модуль), если значения для текущего элемента не установлено.
|
||||
// Истина - Получение настройки только для текущего элемента.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
|
@ -122,7 +122,7 @@
|
||||
|
||||
#Область ДатаВремя
|
||||
|
||||
// Человекочитаемое представление продолжительности
|
||||
// Формирует представление продолжительности в удобном для восприятия виде, с выделением минут секунд и тд.
|
||||
//
|
||||
// Параметры:
|
||||
// Продолжительность - Число - Продолжительность в миллисекундах
|
||||
@ -335,7 +335,7 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Преостанавливает поток выполнения на указанное количество секунд
|
||||
// Приостанавливает поток выполнения на указанное количество секунд
|
||||
//
|
||||
// Параметры:
|
||||
// Время - Число - Продолжительность паузы в секундах, возможно указывать дробное значение
|
||||
@ -376,7 +376,7 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Возвращяет макет
|
||||
// Возвращает макет
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяМакета - Строка - Возможные значения
|
||||
|
@ -43,7 +43,8 @@
|
||||
Для Каждого РезультатТеста Из Набор.Тесты Цикл
|
||||
|
||||
Попытка
|
||||
СохранитьОтчетТеста(РезультатТеста, Набор, Модуль, Каталог);
|
||||
Описание = ОписаниеТеста(РезультатТеста, Набор, Модуль);
|
||||
СохранитьОтчетТеста(Описание, Каталог);
|
||||
Исключение
|
||||
ЮТЛогирование.Ошибка("Ошибка сохранения отчета в формате Allure. " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
@ -63,9 +64,7 @@
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#Если НЕ ВебКлиент Тогда
|
||||
Процедура СохранитьОтчетТеста(РезультатТеста, Набор, Модуль, Каталог)
|
||||
|
||||
Описание = ОписаниеТеста(РезультатТеста, Набор, Модуль);
|
||||
Процедура СохранитьОтчетТеста(Описание, Каталог)
|
||||
|
||||
ИмяФайла = ЮТФайлы.ОбъединитьПути(Каталог, Описание.uuid + "-result.json");
|
||||
Запись = Новый ЗаписьJSON();
|
||||
@ -81,6 +80,8 @@
|
||||
ПредставлениеРежима = СтрШаблон(" [%1]", РезультатТеста.Режим);
|
||||
ПолныйИдентификаторТеста = СтрШаблон("%1_%2_%3", РезультатТеста.НомерВНаборе, РезультатТеста.ПолноеИмяМетода, РезультатТеста.Режим);
|
||||
|
||||
Теги = ЮТОтчетСлужебныйКлиентСервер.УникальныеТеги(Модуль, Набор, РезультатТеста);
|
||||
|
||||
Описание = НовыйОписаниеТеста();
|
||||
Описание.fullName = РезультатТеста.ПолноеИмяМетода + ПредставлениеРежима;
|
||||
Описание.name = РезультатТеста.Метод + ПредставлениеРежима;
|
||||
@ -115,7 +116,7 @@
|
||||
|
||||
ДобавитьМетку(Описание, "tag", РезультатТеста.Режим);
|
||||
|
||||
Для Каждого Тег Из РезультатТеста.Теги Цикл
|
||||
Для Каждого Тег Из Теги Цикл
|
||||
ДобавитьМетку(Описание, "tag", Тег);
|
||||
КонецЦикла;
|
||||
|
||||
|
@ -71,7 +71,7 @@
|
||||
|
||||
Для Каждого Набор Из Модуль.НаборыТестов Цикл
|
||||
|
||||
ЗаписатьНабор(ЗаписьXML, Набор, Номер);
|
||||
ЗаписатьНабор(ЗаписьXML, Модуль, Набор, Номер);
|
||||
Номер = Номер + 1;
|
||||
|
||||
КонецЦикла;
|
||||
@ -172,11 +172,14 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ЗаписатьСвойства(ЗаписьXML, Новый Структура, РезультатТеста.Теги);
|
||||
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаписатьОшибку(ЗаписьXML, ОписаниеОшибки)
|
||||
|
||||
Сообщение = СообщениеОбОшибке(ОписаниеОшибки);
|
||||
ЗаписьXML.ЗаписатьНачалоЭлемента("error");
|
||||
Если Сообщение <> Неопределено Тогда
|
||||
@ -192,9 +195,10 @@
|
||||
КонецЕсли;
|
||||
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаписатьНабор(ЗаписьXML, Набор, Номер)
|
||||
Процедура ЗаписатьНабор(ЗаписьXML, Модуль, Набор, Номер)
|
||||
|
||||
КоличествоТестов = 0;
|
||||
КоличествоПропущенных = 0;
|
||||
@ -234,12 +238,12 @@
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого РезультатТеста Из Набор.Тесты Цикл
|
||||
|
||||
ЗаписатьТест(ЗаписьXML, РезультатТеста);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЗаписатьСвойства(ЗаписьXML, Новый Структура("context", Набор.Режим));
|
||||
Теги = ЮТКоллекции.ОбъединитьМассивы(Модуль.Теги, Набор.Теги);
|
||||
ЗаписатьСвойства(ЗаписьXML, Новый Структура("context", Набор.Режим), Теги);
|
||||
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента(); // testsuite
|
||||
|
||||
КонецПроцедуры
|
||||
@ -328,7 +332,11 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаписатьСвойства(ЗаписьXML, Свойства)
|
||||
Процедура ЗаписатьСвойства(ЗаписьXML, Свойства, Теги = Неопределено)
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Свойства) И НЕ ЗначениеЗаполнено(Теги) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ЗаписьXML.ЗаписатьНачалоЭлемента("properties");
|
||||
|
||||
@ -339,8 +347,27 @@
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента(); // property
|
||||
КонецЦикла;
|
||||
|
||||
ЗаписатьТеги(ЗаписьXML, Теги);
|
||||
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента(); // properties
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаписатьТеги(ЗаписьXML, НаборТегов)
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(НаборТегов) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
УникальныеТеги = ЮТСтроки.УникальныеСтроки(НаборТегов);
|
||||
|
||||
Для Каждого Тег Из УникальныеТеги Цикл
|
||||
ЗаписьXML.ЗаписатьНачалоЭлемента("property");
|
||||
ЗаписьXML.ЗаписатьАтрибут("name", "tag");
|
||||
ЗаписьXML.ЗаписатьАтрибут("value", ЗначениеВСтрокуjUnit(Тег));
|
||||
ЗаписьXML.ЗаписатьКонецЭлемента(); // property
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -0,0 +1,32 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="1b07b92f-e8b1-4683-af00-493118e65411">
|
||||
<name>ЮТОтчетСлужебныйКлиентСервер</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Отчет служебный клиент сервер</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -24,7 +24,7 @@
|
||||
// Параметры:
|
||||
// БИК - Строка - БИК банка
|
||||
// КодВалюты - Строка - Код валюты
|
||||
// ЮрЛицо - Булево - Генерация счета юрлица, иначе физ лица
|
||||
// ЮрЛицо - Булево - Генерация счета юр. лица, иначе физ. лица
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Номер счета
|
||||
|
@ -101,7 +101,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует случаный ИНН физического лица
|
||||
// Формирует случайный ИНН физического лица
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
@ -109,16 +109,16 @@
|
||||
Возврат ЮТТестовыеДанные.Подражатель().Компании().ИНН(, Истина);
|
||||
КонецФункции
|
||||
|
||||
// Формирует случаный СНИЛС.
|
||||
// Формирует случайный СНИЛС.
|
||||
// https://ru.wikipedia.org/wiki/Контрольное_число
|
||||
// Возвращаемое значение:
|
||||
// Строка
|
||||
Функция СНИЛС() Экспорт
|
||||
ЧастиСнилс = Новый Массив();
|
||||
ФорматаяСтрока = "ЧЦ=3; ЧН=000; ЧВН=;";
|
||||
ЧастиСнилс.Добавить(Формат(ЮТТестовыеДанные.СлучайноеЧисло(100, 999), ФорматаяСтрока));
|
||||
ЧастиСнилс.Добавить(Формат(ЮТТестовыеДанные.СлучайноеЧисло(0, 999), ФорматаяСтрока));
|
||||
ЧастиСнилс.Добавить(Формат(ЮТТестовыеДанные.СлучайноеЧисло(0, 999), ФорматаяСтрока));
|
||||
ФорматЧисла = "ЧЦ=3; ЧН=000; ЧВН=;";
|
||||
ЧастиСнилс.Добавить(Формат(ЮТТестовыеДанные.СлучайноеЧисло(100, 999), ФорматЧисла));
|
||||
ЧастиСнилс.Добавить(Формат(ЮТТестовыеДанные.СлучайноеЧисло(0, 999), ФорматЧисла));
|
||||
ЧастиСнилс.Добавить(Формат(ЮТТестовыеДанные.СлучайноеЧисло(0, 999), ФорматЧисла));
|
||||
|
||||
ИтогоСтрокой = СтрСоединить(ЧастиСнилс, "");
|
||||
ДлинаОсновнойЧасти = СтрДлина(ИтогоСтрокой);
|
||||
|
@ -42,7 +42,7 @@
|
||||
КонецФункции
|
||||
|
||||
// Устанавливает имя свойства, все последующие проверки будут относится к нему.
|
||||
// Это алиас для см. Реквизит
|
||||
// Это псевдоним (алиас) для см. Реквизит
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяСвойства - Строка - Имя реквизита
|
||||
|
@ -25,7 +25,7 @@
|
||||
// Предикаты - Массив Из см. ЮТФабрика.ВыражениеПредиката
|
||||
// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке
|
||||
// ПараметрыСравнения - Неопределено
|
||||
// - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры
|
||||
// - Структура - Параметры сравнения значений, для разных выражений используются свои параметры
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. ЮТФабрикаСлужебный.ОписаниеРезультатаПроверки
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Добавляет пяснение возникшей ошибки, которое будет довлено в отчет.
|
||||
// Добавляет пояснение возникшей ошибки, которое будет добавлено в отчет.
|
||||
// Используется перед выбросом исключения, чтобы добавить полезной информации об ошибке, но при этом не ломать стек.
|
||||
//
|
||||
// Параметры:
|
||||
|
@ -211,11 +211,10 @@
|
||||
// После чтения сценариев модуля.
|
||||
// Позволяет настроить/обработать параметры загруженных настроек тестов модуля
|
||||
// Параметры:
|
||||
// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля
|
||||
// ИсполняемыеСценарии - см. ЮТТестыСлужебный.СценарииМодуля
|
||||
Процедура ПослеЧтенияСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии) Экспорт
|
||||
// ОписаниеТестовогоМодуля - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля
|
||||
Процедура ПослеЧтенияСценариевМодуля(ОписаниеТестовогоМодуля) Экспорт
|
||||
|
||||
Параметры = ЮТКоллекции.ЗначениеВМассиве(МетаданныеМодуля, ИсполняемыеСценарии);
|
||||
Параметры = ЮТКоллекции.ЗначениеВМассиве(ОписаниеТестовогоМодуля);
|
||||
ВызватьПодключаемыйОбработчикСобытия("ПослеЧтенияСценариевМодуля", "ЗагрузкаТестов", Параметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
@ -60,7 +60,7 @@
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// https://github.com/vanessa-opensource/add
|
||||
// портирован из Functest
|
||||
// перенесен из Functest
|
||||
Функция ПолучитьТаблицуЗначенийИзТабличногоДокумента(ТабличныйДокумент, УчитыватьТолькоВидимыеКолонки = Ложь, УчитыватьТолькоВидимыеСтроки = Ложь)
|
||||
|
||||
ТипТабличногоДокумента = ТипЗнч(ТабличныйДокумент);
|
||||
@ -79,7 +79,7 @@
|
||||
Колонки = НоваяТаблицаЗначений.Колонки;
|
||||
ТипСтрока = Новый ОписаниеТипов("Строка");
|
||||
|
||||
// TODO При определении видимости не учитывается наличие нескольких форматов строк, сейчас видимоcть колонки определяется по формату первой строки
|
||||
// TODO При определении видимости не учитывается наличие нескольких форматов строк, сейчас видимость колонки определяется по формату первой строки
|
||||
УчитываемыеКолонки = Новый Массив;
|
||||
Для НомерКолонки = 1 По НомерПоследнейКолонки Цикл
|
||||
ОбластьКолонки = ТабличныйДокумент.Область(0, НомерКолонки, 1, НомерКолонки);
|
||||
|
@ -393,7 +393,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область РеализацияПредикатор
|
||||
#Область РеализацияПредикатов
|
||||
|
||||
Процедура ПроверитьВыражениеПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения) Экспорт
|
||||
|
||||
@ -413,7 +413,7 @@
|
||||
// СтатусПроверки - см. ЮТФабрикаСлужебный.ОписаниеРезультатаПроверки
|
||||
// ПараметрыСообщенийОбОшибке - см. ПараметрыСообщенийОбОшибке
|
||||
// ПараметрыСравнения - Неопределено
|
||||
// - Структура - Параметры сравнения значений, для разных выражений испльзуются свои параметры
|
||||
// - Структура - Параметры сравнения значений, для разных выражений используются свои параметры
|
||||
Процедура ВызватьОбработчикПредиката(Значение, Выражение, СтатусПроверки, ПараметрыСообщенийОбОшибке, ПараметрыСравнения)
|
||||
|
||||
// BSLLS:CognitiveComplexity-off
|
||||
|
@ -246,6 +246,36 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Из набора строк формирует набор уникальных строк.
|
||||
// Сравнение происходит без учета регистра.
|
||||
//
|
||||
// Параметры:
|
||||
// НеУникальныеСтроки - Массив Из Строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив Из Строка - Уникальные строки
|
||||
Функция УникальныеСтроки(НеУникальныеСтроки) Экспорт
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(НеУникальныеСтроки) Тогда
|
||||
Возврат НеУникальныеСтроки;
|
||||
КонецЕсли;
|
||||
|
||||
Хэш = Новый Соответствие();
|
||||
|
||||
Результат = Новый Массив;
|
||||
|
||||
Для Каждого Строка Из НеУникальныеСтроки Цикл
|
||||
Ключ = НРег(Строка);
|
||||
Если Хэш[Ключ] = Неопределено Тогда
|
||||
Результат.Добавить(Строка);
|
||||
Хэш.Вставить(Ключ, 1);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -535,7 +535,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает случайное предопреленное значения объекта конфигурации.
|
||||
// Возвращает случайное предопределенное значения объекта конфигурации.
|
||||
//
|
||||
// Параметры:
|
||||
// Менеджер - Строка - Имя менеджера. Примеры: "Справочники.ВидыЦен", "Справочник.ВидыЦен"
|
||||
|
@ -40,11 +40,11 @@
|
||||
|
||||
ИначеЕсли Тип = Тип("Строка") Тогда
|
||||
|
||||
Значение = ФикстивнаяСтрока(ОписаниеТипа);
|
||||
Значение = ФиктивнаяСтрока(ОписаниеТипа);
|
||||
|
||||
ИначеЕсли Тип = Тип("Дата") Тогда
|
||||
|
||||
Значение = ФикстивнаяДата(ОписаниеТипа);
|
||||
Значение = ФиктивнаяДата(ОписаниеТипа);
|
||||
|
||||
ИначеЕсли Тип = Тип("Булево") Тогда
|
||||
|
||||
@ -227,7 +227,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ФикстивнаяСтрока(ОписаниеТипа)
|
||||
Функция ФиктивнаяСтрока(ОписаниеТипа)
|
||||
|
||||
Если ТипЗнч(ОписаниеТипа) <> Тип("ОписаниеТипов") Тогда
|
||||
Возврат ЮТТестовыеДанные.СлучайнаяСтрока(ЮТТестовыеДанные.СлучайноеПоложительноеЧисло(100));
|
||||
@ -243,7 +243,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ФикстивнаяДата(ОписаниеТипа)
|
||||
Функция ФиктивнаяДата(ОписаниеТипа)
|
||||
|
||||
Интервал = 315360000; // 10 лет
|
||||
//@skip-check use-non-recommended-method
|
||||
|
@ -37,6 +37,21 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Добавляет тег к тесту/набору/модулю
|
||||
//
|
||||
// Параметры:
|
||||
// Тег - Строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// CommonModule.ЮТТесты - Тег
|
||||
Функция Тег(Тег) Экспорт
|
||||
|
||||
ЮТТестыСлужебный.ДобавитьТег(Тег);
|
||||
|
||||
Возврат ЮТТесты;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Регистрирует тест, исполняемый в контекстах, в которых доступен тестовый модуль.
|
||||
// Например
|
||||
//
|
||||
@ -105,7 +120,7 @@
|
||||
// ОбщийМодуль - Этот же модуль
|
||||
Функция НастройкаИсполнения(ИмяПараметра, Значение) Экспорт
|
||||
|
||||
ЮТТестыСлужебный.НастройкаИсполнения(ИмяПараметра, Значение);
|
||||
ЮТТестыСлужебный.УстановитьНастройкуИсполнения(ИмяПараметра, Значение);
|
||||
|
||||
Возврат ЮТТесты;
|
||||
|
||||
@ -120,7 +135,7 @@
|
||||
// ОбщийМодуль - Этот же модуль
|
||||
Функция ВТранзакции(ВыполнятьВТранзакции = Истина) Экспорт
|
||||
|
||||
ЮТТестыСлужебный.НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции, ВыполнятьВТранзакции);
|
||||
ЮТТестыСлужебный.УстановитьНастройкуИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции, ВыполнятьВТранзакции);
|
||||
|
||||
Возврат ЮТТесты;
|
||||
|
||||
@ -141,7 +156,7 @@
|
||||
// ОбщийМодуль - Этот же модуль
|
||||
Функция УдалениеТестовыхДанных(УдалятьСозданныеДанные = Истина) Экспорт
|
||||
|
||||
ЮТТестыСлужебный.НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().УдалениеТестовыхДанных, УдалятьСозданныеДанные);
|
||||
ЮТТестыСлужебный.УстановитьНастройкуИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().УдалениеТестовыхДанных, УдалятьСозданныеДанные);
|
||||
|
||||
Возврат ЮТТесты;
|
||||
|
||||
@ -156,7 +171,7 @@
|
||||
// ОбщийМодуль - Этот же модуль
|
||||
Функция Перед(ВыполнитьПеред = "") Экспорт
|
||||
|
||||
ЮТТестыСлужебный.НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().Перед, ВыполнитьПеред);
|
||||
ЮТТестыСлужебный.УстановитьНастройкуИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().Перед, ВыполнитьПеред);
|
||||
|
||||
Возврат ЮТТесты;
|
||||
|
||||
@ -171,7 +186,7 @@
|
||||
// ОбщийМодуль - Этот же модуль
|
||||
Функция После(ВыполнитьПосле = "") Экспорт
|
||||
|
||||
ЮТТестыСлужебный.НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().После, ВыполнитьПосле);
|
||||
ЮТТестыСлужебный.УстановитьНастройкуИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().После, ВыполнитьПосле);
|
||||
|
||||
Возврат ЮТТесты;
|
||||
|
||||
@ -350,15 +365,29 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возволяет выполнить настройку зависимостей теста, тестового набора или модуля.
|
||||
// Позволяет выполнить настройку зависимостей теста, тестового набора или модуля.
|
||||
// Возвращает модуль установки зависимостей теста.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// CommonModule
|
||||
// CommonModule - Этот же модуль
|
||||
Функция ЗависитОт() Экспорт
|
||||
|
||||
Возврат ЮТЗависимости;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Используется для вызова произвольной функции внутри текучего интерфейса
|
||||
//
|
||||
// Параметры:
|
||||
// _ - Произвольный
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// CommonModule - Этот же модуль
|
||||
//@skip-check bsl-variable-name-invalid
|
||||
Функция Вызов(_) Экспорт
|
||||
|
||||
Возврат ЮТТесты;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -20,39 +20,35 @@
|
||||
|
||||
Процедура ДобавитьТестовыйНабор(Имя, ТегиСтрокой) Экспорт
|
||||
|
||||
ИсполняемыеСценарии = СценарииМодуля();
|
||||
|
||||
Если НЕ ЭтоИсполняемыеСценарии(ИсполняемыеСценарии) Тогда
|
||||
ВызватьИсключение "Первый параметр должен быть результатом метода ЮТТесты.ИсполняемыеСценарии";
|
||||
КонецЕсли;
|
||||
|
||||
Если ПустаяСтрока(Имя) Тогда
|
||||
ВызватьИсключение "Имя тестового набора не может быть пустым";
|
||||
КонецЕсли;
|
||||
|
||||
Контекст = Контекст();
|
||||
НовыйТестовыйНабор = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(Имя, ТегиСтрокой);
|
||||
|
||||
ИсполняемыеСценарии.ТестовыеНаборы.Добавить(НовыйТестовыйНабор);
|
||||
Контекст.ТекущийНабор = НовыйТестовыйНабор;
|
||||
Контекст.ТекущийЭлемент = НовыйТестовыйНабор;
|
||||
Если Контекст = Неопределено ИЛИ НЕ Контекст.Свойство("ОписаниеМодуля") Тогда
|
||||
ВызватьИсключение "Не инициализирован контекст регистрации тестов";
|
||||
КонецЕсли;
|
||||
|
||||
ТестовыйНабор = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(Имя, ТегиСтрокой);
|
||||
|
||||
Контекст.ОписаниеМодуля.НаборыТестов.Добавить(ТестовыйНабор);
|
||||
Контекст.ТекущийНабор = ТестовыйНабор;
|
||||
Контекст.ТекущийЭлемент = ТестовыйНабор;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, Контексты) Экспорт
|
||||
|
||||
Если ПустаяСтрока(ИмяТестовогоМетода) Тогда
|
||||
ВызватьИсключение "Имя тестового метода не может быть пустым";
|
||||
КонецЕсли;
|
||||
|
||||
Контекст = Контекст();
|
||||
Набор = Контекст.ТекущийНабор;
|
||||
|
||||
ЭтоИсполняемыеСценарии = ЭтоИсполняемыеСценарии(Набор);
|
||||
ЭтоТестовыйНабор = ЭтоТестовыйНабор(Набор);
|
||||
|
||||
Если НЕ (ЭтоИсполняемыеСценарии ИЛИ ЭтоТестовыйНабор) Тогда
|
||||
ВызватьИсключение "Первый параметр должен быть результатом метода ЮТТесты.ИсполняемыеСценарии или ЮТТесты.ТестовыйНабор";
|
||||
КонецЕсли;
|
||||
|
||||
Если ПустаяСтрока(ИмяТестовогоМетода) Тогда
|
||||
ВызватьИсключение "Имя тестового метода не может быть пустым";
|
||||
Если Набор = Неопределено Или НЕ Набор.Свойство("Тесты") Тогда
|
||||
ВызватьИсключение "Не установлен тестовый набор. Скорее всего проблема в движке";
|
||||
КонецЕсли;
|
||||
|
||||
Тест = ОписаниеТеста(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, Контексты);
|
||||
@ -74,7 +70,7 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура НастройкаИсполнения(ИмяПараметра, Значение) Экспорт
|
||||
Процедура УстановитьНастройкуИсполнения(ИмяПараметра, Значение) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
|
||||
@ -150,6 +146,13 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьТег(ИмяТега) Экспорт
|
||||
|
||||
ТекущийЭлемент = Контекст().ТекущийЭлемент;
|
||||
ТекущийЭлемент.Теги.Добавить(ИмяТега);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция КонтекстыВызоваКлиента() Экспорт
|
||||
|
||||
Режимы = ЮТФабрика.КонтекстыВызова();
|
||||
@ -161,28 +164,21 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// см. ИсполняемыеСценарии
|
||||
Функция СценарииМодуля() Экспорт
|
||||
Функция ОписаниеМодуля() Экспорт
|
||||
|
||||
СценарииМодуля = Контекст().ИсполняемыеСценарии;
|
||||
|
||||
Результат = Новый Структура("ТестовыеНаборы, НастройкиВыполнения, Зависимости");
|
||||
Результат.ТестовыеНаборы = СценарииМодуля.ТестовыеНаборы;
|
||||
|
||||
// TODO Нужен рефакторинг
|
||||
Результат.НастройкиВыполнения = ЮТКоллекции.СкопироватьРекурсивно(СценарииМодуля.НастройкиВыполнения);
|
||||
Результат.Зависимости = ЮТКоллекции.СкопироватьРекурсивно(СценарииМодуля.Зависимости);
|
||||
|
||||
СценарииМодуля.НастройкиВыполнения.Очистить(); // Костыль. Очистка первого набора, тк перенесено в модуль
|
||||
СценарииМодуля.Зависимости.Очистить(); // Костыль. Очистка первого набора, тк перенесено в модуль
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат Результат;
|
||||
Возврат Контекст().ОписаниеМодуля;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Контекст.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Контекст:
|
||||
// * ОписаниеМодуля - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля
|
||||
Функция Контекст() Экспорт
|
||||
|
||||
Возврат ЮТКонтекстСлужебный.ЗначениеКонтекста("КонтекстРегистрацияТестов");
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЮТКонтекстСлужебный.ЗначениеКонтекста(ИмяКонтекста());
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -191,14 +187,12 @@
|
||||
Процедура ПередЧтениемСценариевМодуля(МетаданныеМодуля) Экспорт
|
||||
|
||||
ИнициализироватьКонтекст(МетаданныеМодуля);
|
||||
ЮТСобытияСлужебный.ПередЧтениемСценариевМодуля(МетаданныеМодуля);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеЧтенияСценариевМодуля() Экспорт
|
||||
Процедура ПослеЧтенияСценариевМодуля(ОписаниеТестовогоМодуля) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
ЮТСобытияСлужебный.ПослеЧтенияСценариевМодуля(Контекст.МетаданныеМодуля, Контекст.ИсполняемыеСценарии);
|
||||
ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяКонтекста(), Неопределено);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -208,36 +202,27 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
// Исполняемые сценарии.
|
||||
//
|
||||
// Новое описание тестового модуля.
|
||||
//
|
||||
// Параметры:
|
||||
// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля
|
||||
//
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Исполняемые сценарии:
|
||||
// * ТестовыеНаборы - Массив из см. ЮТФабрикаСлужебный.ОписаниеТестовогоНабора - Тестовые наборы модуля
|
||||
// * НастройкиВыполнения - Структура - Настройки исполнения тестов модуля
|
||||
// * Зависимости - Массив Из см. ЮТФабрика.НовоеОписаниеЗависимости - Зависимости тестового модуля
|
||||
Функция ИсполняемыеСценарии(МетаданныеМодуля)
|
||||
// см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля
|
||||
Функция НовоеОписаниеТестовогоМодуля(МетаданныеМодуля)
|
||||
|
||||
Структура = Новый Структура;
|
||||
Структура.Вставить("ТестовыеНаборы", Новый Массив);
|
||||
Структура.Вставить("НастройкиВыполнения", Новый Структура);
|
||||
Структура.Вставить("Зависимости", Новый Массив);
|
||||
ОписаниеМодуля = ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля(МетаданныеМодуля, Новый Массив);
|
||||
|
||||
Набор = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя);
|
||||
Набор.НастройкиВыполнения = Структура.НастройкиВыполнения; // Общие настройки с набором по умолчанию
|
||||
Набор.Зависимости = Структура.Зависимости; // Общие зависимости с набором по умолчанию
|
||||
НаборПоУмолчанию = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя);
|
||||
ОписаниеМодуля.НаборыТестов.Добавить(НаборПоУмолчанию);
|
||||
|
||||
Структура.ТестовыеНаборы.Добавить(Набор);
|
||||
|
||||
Возврат Структура;
|
||||
Возврат ОписаниеМодуля;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция КонтекстыВызоваПоУмолчанию()
|
||||
|
||||
Возврат ЮТФабрикаСлужебный.КонтекстыМодуля(Контекст().МетаданныеМодуля);
|
||||
Возврат ЮТФабрикаСлужебный.КонтекстыМодуля(Контекст().ОписаниеМодуля.МетаданныеМодуля);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -249,20 +234,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоИсполняемыеСценарии(ИсполняемыеСценарии)
|
||||
|
||||
Возврат ТипЗнч(ИсполняемыеСценарии) = Тип("Структура")
|
||||
И ТипЗнч(ЮТКоллекции.ЗначениеСтруктуры(ИсполняемыеСценарии, "ТестовыеНаборы")) = Тип("Массив");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоТестовыйНабор(ТестовыйНабор)
|
||||
|
||||
Возврат ТипЗнч(ТестовыйНабор) = Тип("Структура")
|
||||
И ТипЗнч(ЮТКоллекции.ЗначениеСтруктуры(ТестовыйНабор, "Тесты")) = Тип("Массив");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоОписаниеТеста(Описание)
|
||||
|
||||
Возврат ТипЗнч(Описание) = Тип("Структура")
|
||||
@ -284,18 +255,17 @@
|
||||
|
||||
Процедура ИнициализироватьКонтекст(МетаданныеМодуля)
|
||||
|
||||
ИсполняемыеСценарии = ИсполняемыеСценарии(МетаданныеМодуля);
|
||||
Набор = ИсполняемыеСценарии.ТестовыеНаборы[0];
|
||||
ОписаниеМодуля = НовоеОписаниеТестовогоМодуля(МетаданныеМодуля);
|
||||
НаборПоУмолчанию = ОписаниеМодуля.НаборыТестов[0];
|
||||
|
||||
Контекст = Новый Структура();
|
||||
|
||||
Контекст.Вставить("МетаданныеМодуля", МетаданныеМодуля);
|
||||
Контекст.Вставить("ИсполняемыеСценарии", ИсполняемыеСценарии);
|
||||
Контекст.Вставить("ТекущийНабор", Набор);
|
||||
Контекст.Вставить("ТекущийЭлемент", Набор);
|
||||
Контекст.Вставить("ОписаниеМодуля", ОписаниеМодуля);
|
||||
Контекст.Вставить("ТекущийНабор", НаборПоУмолчанию);
|
||||
Контекст.Вставить("ТекущийЭлемент", ОписаниеМодуля);
|
||||
Контекст.Вставить("БазовыйТест", Неопределено);
|
||||
|
||||
ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста("КонтекстРегистрацияТестов", Контекст);
|
||||
ЮТКонтекстСлужебный.УстановитьЗначениеКонтекста(ИмяКонтекста(), Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -313,4 +283,10 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИмяКонтекста()
|
||||
|
||||
Возврат "КонтекстРегистрацияТестов";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -828,7 +828,7 @@
|
||||
// Параметры:
|
||||
// ОжидаемоеЗначение - Строка - Ожидается, что сообщение об ошибке будет содержать(включать) данный текст
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
// ВТранзакции - Булево - Вызов метода выполняется в трананзакции
|
||||
// ВТранзакции - Булево - Вызов метода выполняется в транзакции
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
@ -868,7 +868,7 @@
|
||||
// ОжидаемоеЗначение - Строка - Ожидается, что метод выбросит исключение, текст которого НЕ будет содержать (включать) данный текст
|
||||
// - Неопределено - Ожидается, что метод отработает без выбора исключения
|
||||
// ОписаниеПроверки - Строка - Описание конкретной проверки
|
||||
// ВТранзакции - Булево - Вызов метода выполняется в трананзакции
|
||||
// ВТранзакции - Булево - Вызов метода выполняется в транзакции
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ОбщийМодуль - Этот модуль для замыкания
|
||||
|
@ -122,9 +122,12 @@
|
||||
|
||||
Описание.Вставить("Имя", Строка(Имя));
|
||||
Описание.Вставить("Представление", Строка(Имя));
|
||||
Описание.Вставить("Теги", СтрРазделить(ТегиСтрокой, ", ", Ложь));
|
||||
Описание.Вставить("Тесты", Новый Массив);
|
||||
|
||||
Если ЗначениеЗаполнено(ТегиСтрокой) Тогда
|
||||
Описание.Теги = ЮТСтроки.РазделитьСтроку(ТегиСтрокой, ",");
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
@ -143,7 +146,7 @@
|
||||
// * Имя - Строка - Имя теста (тестового метода)
|
||||
// * Представление - Строка - Представление теста
|
||||
// * Теги - Массив из Строка - Теги теста
|
||||
// * КонтекстВызова - Массив из Строка - Контексты исполнения теста
|
||||
// * КонтекстВызова - Массив из Строка - Контексты исполнения теста, см. ЮТФабрика.КонтекстыВызова
|
||||
// * НастройкиВыполнения- Структура - Настройки исполнения теста
|
||||
// * Параметры - Неопределено, Массив из Произвольный - Параметры теста
|
||||
// * НомерВНаборе - Число - Порядковый номер теста в наборе
|
||||
@ -158,11 +161,14 @@
|
||||
Описание = БазовоеОписаниеРегистрируемогоОбъекта();
|
||||
Описание.Вставить("Имя", Строка(Имя));
|
||||
Описание.Вставить("Представление", Строка(Представление));
|
||||
Описание.Вставить("Теги", СтрРазделить(ТегиСтрокой, ", ", Ложь));
|
||||
Описание.Вставить("КонтекстВызова", КонтекстыВызова);
|
||||
Описание.Вставить("Параметры", Неопределено);
|
||||
Описание.Вставить("НомерВНаборе", 0);
|
||||
|
||||
Если ЗначениеЗаполнено(ТегиСтрокой) Тогда
|
||||
Описание.Теги = ЮТСтроки.РазделитьСтроку(ТегиСтрокой, ",");
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
@ -218,7 +224,6 @@
|
||||
|
||||
Описание.Вставить("Имя", НаборТестов.Имя);
|
||||
Описание.Вставить("Представление", НаборТестов.Представление);
|
||||
Описание.Вставить("Теги", НаборТестов.Теги);
|
||||
Описание.Вставить("Режим", "");
|
||||
Описание.Вставить("ТестовыйМодуль", ТестовыйМодуль);
|
||||
Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля);
|
||||
@ -264,7 +269,6 @@
|
||||
Описание.Вставить("Имя", Представление);
|
||||
Описание.Вставить("Метод", Тест.Имя);
|
||||
Описание.Вставить("ПолноеИмяМетода", ПолноеИмяМетода);
|
||||
Описание.Вставить("Теги", Тест.Теги);
|
||||
Описание.Вставить("Режим", Режим);
|
||||
Описание.Вставить("ДатаСтарта", 0);
|
||||
Описание.Вставить("Длительность", 0);
|
||||
@ -702,8 +706,12 @@
|
||||
Функция БазовоеОписаниеРегистрируемогоОбъекта()
|
||||
|
||||
Описание = Новый Структура();
|
||||
|
||||
Описание.Вставить("Теги", Новый Массив);
|
||||
|
||||
Описание.Вставить("НастройкиВыполнения", Новый Структура());
|
||||
Описание.Вставить("Зависимости", Новый Массив());
|
||||
|
||||
Описание.Вставить("Ошибки", Новый Массив);
|
||||
|
||||
Возврат Описание;
|
||||
@ -713,10 +721,14 @@
|
||||
Функция БазовоеОписаниеИсполняемогоОбъекта(РегистрируемыйОбъекта)
|
||||
|
||||
Описание = Новый Структура();
|
||||
Описание.Вставить("Ошибки", ЮТКоллекции.СкопироватьМассив(РегистрируемыйОбъекта.Ошибки));
|
||||
|
||||
Описание.Вставить("Теги", ЮТКоллекции.СкопироватьМассив(РегистрируемыйОбъекта.Теги));
|
||||
|
||||
Описание.Вставить("НастройкиВыполнения", ЮТКоллекции.СкопироватьСтруктуру(РегистрируемыйОбъекта.НастройкиВыполнения));
|
||||
Описание.Вставить("Зависимости", ЮТКоллекции.СкопироватьМассив(РегистрируемыйОбъекта.Зависимости));
|
||||
|
||||
Описание.Вставить("Ошибки", ЮТКоллекции.СкопироватьМассив(РегистрируемыйОбъекта.Ошибки));
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
@ -22,9 +22,9 @@
|
||||
|
||||
Контекст = ЮТКонтекстСлужебный.КонтекстЧитателя();
|
||||
|
||||
НормализованноеИмяРасширения = УдалитьНедопустимыеСимволыИзСтрокиКакКлючаСтруктуры(ИмяРасширения);
|
||||
НормализованноеИмяРасширения = НРег(ИмяРасширения);
|
||||
|
||||
Возврат НЕ Контекст.Фильтр.ЕстьФильтрРасширений ИЛИ Контекст.Фильтр.Расширения.Свойство(НормализованноеИмяРасширения);
|
||||
Возврат НЕ Контекст.Фильтр.ЕстьФильтрРасширений ИЛИ Контекст.Фильтр.Расширения[НормализованноеИмяРасширения] <> Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -41,88 +41,48 @@
|
||||
// Отфильтровать тестовые наборы.
|
||||
//
|
||||
// Параметры:
|
||||
// ТестовыеНаборы - Массив из см. ЮТФабрикаСлужебный.ОписаниеТестовогоНабора - Тестовые наборы
|
||||
// ОписаниеМодуля - Структура - Описание модуля, которому принадлежат наборы, см. ЮТФабрикаСлужебный.ОписаниеМодуля
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из см. ЮТФабрикаСлужебный.ОписаниеТестовогоНабора - Отфильтрованные наборы
|
||||
Функция ОтфильтроватьТестовыеНаборы(ТестовыеНаборы, ОписаниеМодуля) Экспорт
|
||||
// ОписаниеТестовогоМодуля - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля
|
||||
Процедура ОтфильтроватьТестовыеНаборы(ОписаниеТестовогоМодуля) Экспорт
|
||||
|
||||
Контекст = ЮТКонтекстСлужебный.КонтекстЧитателя();
|
||||
Фильтр = ЮТКонтекстСлужебный.КонтекстЧитателя().Фильтр;
|
||||
|
||||
Если НЕ Контекст.Фильтр.ЕстьФильтрТестов И НЕ Контекст.Фильтр.ЕстьФильтрКонтекстов Тогда
|
||||
Возврат ТестовыеНаборы;
|
||||
Если НЕ Фильтр.ЕстьФильтрТестов И НЕ Фильтр.ЕстьФильтрКонтекстов И НЕ Фильтр.ЕстьФильтрТегов Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
НаборыТестов = ОписаниеТестовогоМодуля.НаборыТестов;
|
||||
МетаданныеМодуля = ОписаниеТестовогоМодуля.МетаданныеМодуля;
|
||||
|
||||
Результат = Новый Массив();
|
||||
|
||||
Если Контекст.Фильтр.ЕстьФильтрТестов Тогда
|
||||
ДоступныеТестовыеМетоды = Новый Соответствие();
|
||||
|
||||
Для Каждого ОписаниеИмениТеста Из Контекст.Фильтр.Тесты Цикл
|
||||
|
||||
Если СтрСравнить(ОписаниеИмениТеста.ИмяМодуля, ОписаниеМодуля.Имя) = 0 Тогда
|
||||
ОписаниеИмениТеста.ИмяМетода = ВРег(ОписаниеИмениТеста.ИмяМетода);
|
||||
|
||||
СохраненноеОписаниеИмени = ДоступныеТестовыеМетоды[ОписаниеИмениТеста.ИмяМетода];
|
||||
|
||||
Если СохраненноеОписаниеИмени = Неопределено И ОписаниеИмениТеста.Контекст = Неопределено Тогда
|
||||
ДоступныеТестовыеМетоды.Вставить(ВРег(ОписаниеИмениТеста.ИмяМетода), ОписаниеИмениТеста);
|
||||
ИначеЕсли СохраненноеОписаниеИмени = Неопределено Тогда
|
||||
ОписаниеИмениТеста.Контекст = ЮТКоллекции.ЗначениеВМассиве(ОписаниеИмениТеста.Контекст);
|
||||
ДоступныеТестовыеМетоды.Вставить(ВРег(ОписаниеИмениТеста.ИмяМетода), ОписаниеИмениТеста);
|
||||
ИначеЕсли ОписаниеИмениТеста.Контекст = Неопределено Тогда
|
||||
СохраненноеОписаниеИмени.Контекст = Неопределено; // Без фильтрации контекста теста, возьмом из самого теста контексты
|
||||
ИначеЕсли СохраненноеОписаниеИмени.Контекст <> Неопределено Тогда
|
||||
СохраненноеОписаниеИмени.Контекст.Добавить(ОписаниеИмениТеста.Контекст);
|
||||
Иначе
|
||||
// Если было имя теста без контекста, то будет вызов во всех контекстах
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
СостояниеФильтрации = Новый Структура;
|
||||
ДоступныеТестовыеМетоды(Фильтр, МетаданныеМодуля, СостояниеФильтрации);
|
||||
|
||||
Для Каждого Набор Из ТестовыеНаборы Цикл
|
||||
Для Каждого Набор Из НаборыТестов Цикл
|
||||
|
||||
Если НЕ ЭтоПодходящийНабор(Набор, Фильтр) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ОтфильтрованныйНабор = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(Набор.Имя);
|
||||
ЗаполнитьЗначенияСвойств(ОтфильтрованныйНабор, Набор, , "Тесты");
|
||||
|
||||
ОбработатьТегиНабора(ОписаниеТестовогоМодуля, Набор, Фильтр, СостояниеФильтрации);
|
||||
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
|
||||
КонтекстыТеста = Неопределено;
|
||||
ТестПодходитПодФильтр = ФильтрТестов(Тест, Фильтр, СостояниеФильтрации)
|
||||
И ФильтрКонтекста(Тест, Фильтр)
|
||||
И ФильтрТегов(Тест, Фильтр, СостояниеФильтрации);
|
||||
|
||||
Если ДоступныеТестовыеМетоды <> Неопределено Тогда
|
||||
ОписаниеИмениТеста = ДоступныеТестовыеМетоды[ВРег(Тест.Имя)];
|
||||
Если ТестПодходитПодФильтр Тогда
|
||||
|
||||
Если ОписаниеИмениТеста = Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
КонтекстыТеста = ОписаниеИмениТеста.Контекст;
|
||||
ОтфильтрованныйТест = ЮТФабрикаСлужебный.ОписаниеТеста(Тест.Имя, "", "");
|
||||
ЗаполнитьЗначенияСвойств(ОтфильтрованныйТест, Тест);
|
||||
ОтфильтрованныйНабор.Тесты.Добавить(ОтфильтрованныйТест);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если КонтекстыТеста = Неопределено Тогда
|
||||
КонтекстыТеста = Тест.КонтекстВызова;
|
||||
КонецЕсли;
|
||||
|
||||
Если Контекст.Фильтр.ЕстьФильтрКонтекстов Тогда
|
||||
КонтекстыТеста = ЮТКоллекции.ПересечениеМассивов(КонтекстыТеста, Контекст.Фильтр.Контексты);
|
||||
КонецЕсли;
|
||||
|
||||
Если КонтекстыТеста.Количество() = 0 Тогда
|
||||
// Возможно стоит такие выводить в лог с ошибкой "по переданным параметрам контекст теста не определен"
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ОтфильтрованныйТест = ЮТФабрикаСлужебный.ОписаниеТеста(Тест.Имя, "", "");
|
||||
ЗаполнитьЗначенияСвойств(ОтфильтрованныйТест, Тест, , "КонтекстВызова");
|
||||
ОтфильтрованныйТест.КонтекстВызова = КонтекстыТеста;
|
||||
|
||||
ОтфильтрованныйНабор.Тесты.Добавить(ОтфильтрованныйТест);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если ОтфильтрованныйНабор.Тесты.Количество() Тогда
|
||||
@ -131,33 +91,30 @@
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
ОписаниеТестовогоМодуля.НаборыТестов = Результат;
|
||||
|
||||
КонецФункции
|
||||
КонецПроцедуры
|
||||
|
||||
// Фильтр
|
||||
// Конструктур фильтра поиска тестовых методов
|
||||
// Конструктор фильтра поиска тестовых методов
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Фильтр:
|
||||
// * Расширения - Структура - Имена расширений
|
||||
// * Модули - Структура - Имена модулей
|
||||
// * Наборы - Массив из Строка - Имена тестовых наборов
|
||||
// * Теги - Массив из Строка
|
||||
// * Наборы - Соответствие из Строка - Имена тестовых наборов
|
||||
// * Теги - Соответствие из Строка
|
||||
// * Контексты - Массив из Строка - Контексты вызова тестовых методов
|
||||
// * Тесты - Массив из см. ОписаниеИмениТеста - Список путей к тестовым методам
|
||||
// * Пути - Массив из Строка
|
||||
Функция Фильтр() Экспорт
|
||||
|
||||
//@skip-check structure-consructor-too-many-keys
|
||||
Фильтр = Новый Структура("Расширения, Модули, Наборы, Теги, Контексты, Пути, Тесты");
|
||||
Фильтр = Новый Структура("Расширения, Модули, Наборы, Теги, Контексты, Тесты");
|
||||
|
||||
Фильтр.Расширения = Новый Структура();
|
||||
Фильтр.Расширения = Новый Соответствие();
|
||||
Фильтр.Модули = Новый Структура();
|
||||
Фильтр.Теги = Новый Массив();
|
||||
Фильтр.Теги = Новый Соответствие();
|
||||
Фильтр.Контексты = Новый Массив();
|
||||
Фильтр.Наборы = Новый Массив();
|
||||
Фильтр.Пути = Новый Массив();
|
||||
Фильтр.Наборы = Новый Соответствие();
|
||||
Фильтр.Тесты = Новый Массив();
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
@ -173,16 +130,12 @@
|
||||
Тесты = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "tests", Новый Массив);
|
||||
|
||||
Теги = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "tags", Новый Массив);
|
||||
// TODO: Подумать в каком формате задать наборы - ИмяМодуля.Набор, Набор или другой вариант
|
||||
Наборы = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "suites", Новый Массив);
|
||||
// TODO: Обработка путей в формате: Модуль.ИмяТеста, ИмяТеста - метод, параметры, контекст
|
||||
// ОМ_ЮТУтверждения.Что[0: 1].Сервер, ОМ_ЮТУтверждения.Что[1: Структура].Сервер
|
||||
Пути = ЮТКоллекции.ЗначениеСтруктуры(ПараметрыЗапускаТестов.filter, "paths", Новый Массив);
|
||||
|
||||
Фильтр = Фильтр();
|
||||
|
||||
Фильтр.Расширения = МассивВСтруктуру(Расширения);
|
||||
Фильтр.Модули = МассивВСтруктуру(Модули);
|
||||
Фильтр.Расширения = МассивВСоответствие(Расширения);
|
||||
Фильтр.Модули = ЮТКоллекции.МассивВСтруктуру(Модули);
|
||||
|
||||
Если Контексты = Неопределено Тогда
|
||||
Фильтр.Контексты = ЮТФабрикаСлужебный.КонтекстыПриложения();
|
||||
@ -191,15 +144,11 @@
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Теги) Тогда
|
||||
Фильтр.Теги = Теги;
|
||||
Фильтр.Теги = МассивВСоответствие(Теги);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Наборы) Тогда
|
||||
Фильтр.Наборы = Наборы;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(Пути) Тогда
|
||||
Фильтр.Пути = Пути;
|
||||
Фильтр.Наборы = МассивВСоответствие(Наборы);
|
||||
КонецЕсли;
|
||||
|
||||
МодулиТестов = Новый Структура();
|
||||
@ -232,8 +181,10 @@
|
||||
|
||||
Фильтр.Вставить("ЕстьФильтрРасширений", Фильтр.Расширения.Количество() > 0);
|
||||
Фильтр.Вставить("ЕстьФильтрМодулей", МодулиТестов.Количество() ИЛИ Фильтр.Модули.Количество());
|
||||
Фильтр.Вставить("ЕстьФильтрТестов", Фильтр.Тесты.Количество());
|
||||
Фильтр.Вставить("ЕстьФильтрНаборов", ЗначениеЗаполнено(Фильтр.Наборы));
|
||||
Фильтр.Вставить("ЕстьФильтрТестов", Фильтр.Тесты.Количество() > 0 );
|
||||
Фильтр.Вставить("ЕстьФильтрКонтекстов", ЗначениеЗаполнено(Фильтр.Контексты));
|
||||
Фильтр.Вставить("ЕстьФильтрТегов", ЗначениеЗаполнено(Фильтр.Теги));
|
||||
|
||||
ЮТКонтекстСлужебный.УстановитьКонтекстЧитателя(Новый Структура("Фильтр", Фильтр));
|
||||
|
||||
@ -243,30 +194,6 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция МассивВСтруктуру(Значения)
|
||||
|
||||
Результат = Новый Структура();
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Значения) Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Значение Из Значения Цикл
|
||||
|
||||
НормализованноеЗначение = УдалитьНедопустимыеСимволыИзСтрокиКакКлючаСтруктуры(Значение);
|
||||
Результат.Вставить(НормализованноеЗначение);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УдалитьНедопустимыеСимволыИзСтрокиКакКлючаСтруктуры(СтрокаКакКлюч)
|
||||
// TODO Переработать. Не модифицировать значение
|
||||
Возврат СтрЗаменить(СтрокаКакКлюч, ".", "");
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеИмениТеста(Путь)
|
||||
|
||||
Части = СтрРазделить(Путь, ".");
|
||||
@ -291,4 +218,136 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДоступныеТестовыеМетоды(Фильтр, ОписаниеМодуля, СостояниеФильтрации)
|
||||
|
||||
Если НЕ Фильтр.ЕстьФильтрТестов Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ДоступныеТестовыеМетоды = Новый Соответствие();
|
||||
|
||||
Для Каждого ОписаниеИмениТеста Из Фильтр.Тесты Цикл
|
||||
|
||||
Если СтрСравнить(ОписаниеИмениТеста.ИмяМодуля, ОписаниеМодуля.Имя) = 0 Тогда
|
||||
ОписаниеИмениТеста.ИмяМетода = ВРег(ОписаниеИмениТеста.ИмяМетода);
|
||||
|
||||
СохраненноеОписаниеИмени = ДоступныеТестовыеМетоды[ОписаниеИмениТеста.ИмяМетода];
|
||||
|
||||
Если СохраненноеОписаниеИмени = Неопределено И ОписаниеИмениТеста.Контекст = Неопределено Тогда
|
||||
ДоступныеТестовыеМетоды.Вставить(ВРег(ОписаниеИмениТеста.ИмяМетода), ОписаниеИмениТеста);
|
||||
ИначеЕсли СохраненноеОписаниеИмени = Неопределено Тогда
|
||||
ОписаниеИмениТеста.Контекст = ЮТКоллекции.ЗначениеВМассиве(ОписаниеИмениТеста.Контекст);
|
||||
ДоступныеТестовыеМетоды.Вставить(ВРег(ОписаниеИмениТеста.ИмяМетода), ОписаниеИмениТеста);
|
||||
ИначеЕсли ОписаниеИмениТеста.Контекст = Неопределено Тогда
|
||||
СохраненноеОписаниеИмени.Контекст = Неопределено; // Без фильтрации контекста теста, возьмем из самого теста контексты
|
||||
ИначеЕсли СохраненноеОписаниеИмени.Контекст <> Неопределено Тогда
|
||||
СохраненноеОписаниеИмени.Контекст.Добавить(ОписаниеИмениТеста.Контекст);
|
||||
Иначе
|
||||
// Если было имя теста без контекста, то будет вызов во всех контекстах
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
СостояниеФильтрации.Вставить("ДоступныеТестовыеМетоды", ДоступныеТестовыеМетоды);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьТегиНабора(ОписаниеМодуля, Набор, Фильтр, СостояниеФильтрации)
|
||||
|
||||
Если НЕ Фильтр.ЕстьФильтрТегов Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПодходитПодФильтрТегов = ПодходитПодФильтрТегов(Фильтр, ОписаниеМодуля.Теги) Или ПодходитПодФильтрТегов(Фильтр, Набор.Теги);
|
||||
СостояниеФильтрации.Вставить("ПодходитПодФильтрТегов", ПодходитПодФильтрТегов);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПодходитПодФильтрТегов(Фильтр, Теги)
|
||||
|
||||
Для Каждого Тег Из Теги Цикл
|
||||
|
||||
Если Фильтр.Теги[НРег(Тег)] <> Неопределено Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоПодходящийНабор(Набор, Фильтр)
|
||||
|
||||
Возврат НЕ Фильтр.ЕстьФильтрНаборов Или Фильтр.Наборы[НРег(Набор.Имя)] <> Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ФильтрТестов(Тест, Фильтр, СостояниеФильтрации)
|
||||
|
||||
Если НЕ Фильтр.ЕстьФильтрТестов Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
ФильтрТеста = СостояниеФильтрации.ДоступныеТестовыеМетоды[ВРег(Тест.Имя)];
|
||||
|
||||
Если ФильтрТеста = Неопределено Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ФильтрТеста.Контекст) Тогда
|
||||
Тест.КонтекстВызова = ЮТКоллекции.ПересечениеМассивов(Тест.КонтекстВызова, ФильтрТеста.Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЗначениеЗаполнено(Тест.КонтекстВызова);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ФильтрКонтекста(Тест, Фильтр)
|
||||
|
||||
Если НЕ Фильтр.ЕстьФильтрКонтекстов Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Тест.КонтекстВызова = ЮТКоллекции.ПересечениеМассивов(Тест.КонтекстВызова, Фильтр.Контексты);
|
||||
|
||||
Возврат ЗначениеЗаполнено(Тест.КонтекстВызова);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ФильтрТегов(Тест, Фильтр, СостояниеФильтрации)
|
||||
|
||||
Если НЕ Фильтр.ЕстьФильтрТегов Или СостояниеФильтрации.ПодходитПодФильтрТегов Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Тег Из Тест.Теги Цикл
|
||||
|
||||
Если Фильтр.Теги[НРег(Тег)] <> Неопределено Тогда
|
||||
Возврат Истина;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция МассивВСоответствие(Значения)
|
||||
|
||||
Результат = Новый Соответствие();
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Значения) Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Значение Из Значения Цикл
|
||||
Результат.Вставить(НРег(Значение), Истина);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -62,9 +62,8 @@
|
||||
Функция ИсполняемыеСценарииМодуля(Знач МетаданныеМодуля) Экспорт
|
||||
|
||||
ЭтоТестовыйМодуль = Истина;
|
||||
ОписаниеТестовогоМодуля = ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля(МетаданныеМодуля, Новый Массив);
|
||||
|
||||
ЮТТестыСлужебный.ПередЧтениемСценариевМодуля(МетаданныеМодуля);
|
||||
ЮТСобытияСлужебный.ПередЧтениемСценариевМодуля(МетаданныеМодуля);
|
||||
|
||||
ПолноеИмяМетода = МетаданныеМодуля.Имя + "." + ИмяМетодаСценариев();
|
||||
Ошибка = ЮТМетодыСлужебный.ВыполнитьМетод(ПолноеИмяМетода);
|
||||
@ -88,16 +87,15 @@
|
||||
|
||||
НаборПоУмолчанию = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя);
|
||||
ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуЧтенияТестов(НаборПоУмолчанию, "Ошибка формирования списка тестовых методов", Ошибка);
|
||||
|
||||
ОписаниеТестовогоМодуля = ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля(МетаданныеМодуля, Новый Массив);
|
||||
ОписаниеТестовогоМодуля.НаборыТестов.Добавить(НаборПоУмолчанию);
|
||||
|
||||
ИначеЕсли ЭтоТестовыйМодуль Тогда
|
||||
|
||||
ЮТТестыСлужебный.ПослеЧтенияСценариевМодуля();
|
||||
Сценарии = ЮТТестыСлужебный.СценарииМодуля();
|
||||
|
||||
ОписаниеТестовогоМодуля.НаборыТестов = ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(Сценарии.ТестовыеНаборы, МетаданныеМодуля);
|
||||
ОписаниеТестовогоМодуля.НастройкиВыполнения = Сценарии.НастройкиВыполнения;
|
||||
ОписаниеТестовогоМодуля.Зависимости = Сценарии.Зависимости;
|
||||
ОписаниеТестовогоМодуля = ЮТТестыСлужебный.ОписаниеМодуля();
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеТестовогоМодуля);
|
||||
ЮТСобытияСлужебный.ПослеЧтенияСценариевМодуля(ОписаниеТестовогоМодуля);
|
||||
|
||||
Иначе
|
||||
|
||||
|
@ -90,7 +90,7 @@
|
||||
|
||||
// Умный контекст, в который можно сохранять и получать из него промежуточные данные
|
||||
// Этот контекст работает с см. КонтекстТеста, см. КонтекстТестовогоНабора и см. КонтекстМодуля.
|
||||
// При получении значения оно ущется во всех 3 контекста поочереди.
|
||||
// При получении значения выполняется поиск во всех 3 контекста поочереди.
|
||||
// При установке значения, оно устанавливается в текущий контекст, например, в событии перед тестовым наборов в м. КонтекстТестовогоНабора
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
@ -163,7 +163,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Преостанавливает поток выполнения на указанное количество секунд
|
||||
// Приостанавливает поток выполнения на указанное количество секунд
|
||||
//
|
||||
// Параметры:
|
||||
// Время - Число - Продолжительность паузы в секундах, возможно указывать дробное значение
|
||||
|
@ -100,6 +100,7 @@
|
||||
<commonModules>CommonModule.ЮТОтчетJSONСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТОтчетJUnitСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТОтчетСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТОтчетСлужебныйКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТПараметрыЗапускаСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТПодключаемыеМодулиСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТПодключаемыеМодулиСлужебныйВызовСервера</commonModules>
|
||||
|
@ -355,7 +355,6 @@
|
||||
<font xsi:type="core:FontDef">
|
||||
<height>8.0</height>
|
||||
<bold>true</bold>
|
||||
<font>Style.NormalTextFont</font>
|
||||
</font>
|
||||
</extInfo>
|
||||
</items>
|
||||
@ -409,6 +408,59 @@
|
||||
<textEdit>true</textEdit>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>ДеревоТестовТеги</name>
|
||||
<id>147</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<dataPath xsi:type="form:DataPath">
|
||||
<segments>ДеревоТестов.Теги</segments>
|
||||
</dataPath>
|
||||
<extendedTooltip>
|
||||
<name>ДеревоТестовТегиРасширеннаяПодсказка</name>
|
||||
<id>149</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>148</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>
|
||||
<chooseType>true</chooseType>
|
||||
<typeDomainEnabled>true</typeDomainEnabled>
|
||||
<textEdit>true</textEdit>
|
||||
<textColor xsi:type="core:ColorRef">
|
||||
<color>Style.FieldSelectionBackColor</color>
|
||||
</textColor>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ДеревоТестовГруппаПрогресс</name>
|
||||
<id>102</id>
|
||||
@ -1444,7 +1496,6 @@
|
||||
<verticalStretch>false</verticalStretch>
|
||||
<font xsi:type="core:FontDef">
|
||||
<height>12.0</height>
|
||||
<font>Style.NormalTextFont</font>
|
||||
</font>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
@ -1689,6 +1740,24 @@
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<columns>
|
||||
<name>Теги</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Теги</value>
|
||||
</title>
|
||||
<id>131</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</columns>
|
||||
<additionalColumns>
|
||||
<tablePath xsi:type="form:DataPath">
|
||||
<segments>ДеревоТестов.Ошибки</segments>
|
||||
@ -2003,6 +2072,19 @@
|
||||
<representation>TextPicture</representation>
|
||||
<currentRowUse>DontUse</currentRowUse>
|
||||
</formCommands>
|
||||
<parameters>
|
||||
<name>АдресХранилища</name>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
</valueType>
|
||||
</parameters>
|
||||
<parameters>
|
||||
<name>ЗагрузитьТесты</name>
|
||||
<valueType>
|
||||
<types>Boolean</types>
|
||||
</valueType>
|
||||
</parameters>
|
||||
<commandInterface>
|
||||
<navigationPanel/>
|
||||
<commandBar/>
|
||||
|
@ -31,11 +31,11 @@
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
|
||||
Если Параметры.Свойство("АдресХранилища") И ЭтоАдресВременногоХранилища(Параметры.АдресХранилища) Тогда
|
||||
Если ЭтоАдресВременногоХранилища(Параметры.АдресХранилища) Тогда
|
||||
АдресОтчета = Параметры.АдресХранилища;
|
||||
КонецЕсли;
|
||||
|
||||
Параметры.Свойство("ЗагрузитьТесты", ЗагрузитьТестыПриОткрытии);
|
||||
ЗагрузитьТестыПриОткрытии = Параметры.ЗагрузитьТесты;
|
||||
|
||||
Для Каждого Формат Из ФорматыВыводаОшибки() Цикл
|
||||
Элементы.ФорматВыводаОшибки.СписокВыбора.Добавить(Формат.Ключ, Формат.Ключ);
|
||||
@ -251,7 +251,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
&НаКлиенте
|
||||
Процедура ЗаполнитьОшибки(СтрокаДерева, ОписаниеОбъекта)
|
||||
|
||||
СтрокаДерева.Ошибки.Очистить();
|
||||
@ -284,7 +284,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
&НаКлиенте
|
||||
Функция НормализоватьКонтекст(Контекст)
|
||||
|
||||
Если СтрНачинаетсяС(Контекст, "Клиент") Тогда
|
||||
@ -295,7 +295,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
&НаКлиенте
|
||||
Процедура ИнкрементСтатистики(Статистика, Статус, Знач Статусы = Неопределено)
|
||||
|
||||
Если Статусы = Неопределено Тогда
|
||||
@ -336,7 +336,7 @@
|
||||
|
||||
#Область Интерфейсное
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
&НаКлиенте
|
||||
Функция КартинкаСтатуса(Статус)
|
||||
|
||||
Статусы = ЮТФабрика.СтатусыИсполненияТеста();
|
||||
@ -365,7 +365,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
&НаКлиенте
|
||||
Функция ПредставлениеСтатистики(Статистика)
|
||||
|
||||
БлокиСтатистики = Новый Массив();
|
||||
@ -410,7 +410,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
&НаКлиенте
|
||||
Функция ГрафическоеПредставлениеСтатистики(Статистика)
|
||||
|
||||
Текст = БлокиСтатистики(Статистика);
|
||||
@ -419,7 +419,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
&НаКлиенте
|
||||
Функция БлокиСтатистики(Статистика)
|
||||
|
||||
Блоки = Новый Массив();
|
||||
@ -492,6 +492,7 @@
|
||||
СтрокаНабора.ПредставлениеВремяВыполнения = ЮТОбщий.ПредставлениеПродолжительности(Набор.Длительность);
|
||||
СтрокаНабора.ВремяВыполнения = Набор.Длительность;
|
||||
СтрокаНабора.ТипОбъекта = 2;
|
||||
СтрокаНабора.Теги = СтрСоединить(Набор.Теги, ", ");
|
||||
|
||||
ЗаполнитьОшибки(СтрокаНабора, Набор);
|
||||
|
||||
@ -502,6 +503,7 @@
|
||||
СтрокаТеста = СтрокаНабора.ПолучитьЭлементы().Добавить();
|
||||
|
||||
ОтобразитьРезультатТеста(СтрокаТеста, Тест, Набор);
|
||||
СтрокаТеста.Теги = СтрСоединить(Тест.Теги, ", ");
|
||||
|
||||
Тест.Вставить("Идентификатор", СтрокаТеста.ПолучитьИдентификатор());
|
||||
|
||||
@ -938,6 +940,7 @@
|
||||
Блоки.Добавить("</div></div>");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Функция ЗаменитьСпецСимволы(Знач Стр)
|
||||
|
||||
|
@ -6,5 +6,6 @@
|
||||
<value>Загрузка тестов</value>
|
||||
</synonym>
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<content>CommonModule.ЮТТестыСлужебный</content>
|
||||
<parentSubsystem>Subsystem.ЮТПодключаемыеМодули.Subsystem.ОбработчикиСобытий</parentSubsystem>
|
||||
</mdclass:Subsystem>
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты
|
||||
ЮТТесты.Тег("Мокирование")
|
||||
.ДобавитьТест("Обучение")
|
||||
.ДобавитьТест("Обучение_ЦепочкаВызовов")
|
||||
.ДобавитьТест("Проверить")
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты
|
||||
ЮТТесты.Тег("Мокирование")
|
||||
.ДобавитьТест("ВыброситьИсключение")
|
||||
.ДобавитьСерверныйТест("ФормированиеТипыПерехватываемыхОбъектов")
|
||||
;
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты
|
||||
ЮТТесты.Тег("Мокирование")
|
||||
.ДобавитьТест("ДанныеПерехвата")
|
||||
;
|
||||
|
||||
|
@ -35,6 +35,7 @@
|
||||
.ДобавитьТест("ВСоответствие")
|
||||
.ДобавитьТест("ВСтруктуру")
|
||||
.ДобавитьТест("ПредставлениеМассива")
|
||||
.ДобавитьТест("ОбъединитьМассивы")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -416,6 +417,22 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбъединитьМассивы() Экспорт
|
||||
|
||||
Коллекция1 = ЮТКоллекции.ЗначениеВМассиве(1, 2);
|
||||
Коллекция2 = Новый Массив;
|
||||
Коллекция3 = ЮТКоллекции.ЗначениеВМассиве(3);
|
||||
Коллекция4 = ЮТКоллекции.ЗначениеВМассиве(4, 5);
|
||||
|
||||
Результат = ЮТКоллекции.ОбъединитьМассивы(Коллекция1, Коллекция2, Коллекция3, Коллекция4);
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Массив")
|
||||
.Заполнено()
|
||||
.Равно(ЮТКоллекции.ЗначениеВМассиве(1, 2, 3, 4, 5))
|
||||
.ИмеетДлину(5);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -20,7 +20,8 @@
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты.УдалениеТестовыхДанных()
|
||||
ЮТТесты.Вызов(ТегиТестов.Мокирование())
|
||||
.УдалениеТестовыхДанных()
|
||||
.ДобавитьТест("ЗаполнитьСправочник")
|
||||
.ДобавитьТест("ЗаполнитьДокумент")
|
||||
.ДобавитьТест("СоздатьЗаписьРегистраСведений")
|
||||
@ -32,7 +33,7 @@
|
||||
.ДобавитьТест("СоздатьГруппу")
|
||||
.ДобавитьТест("УстановитьРеквизиты")
|
||||
.ДобавитьТест("УстановитьСсылкуНового")
|
||||
;
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
.ДобавитьТест("ПараметрыГенерацииОтчета")
|
||||
.ДобавитьТест("ЗаписатьОтчет")
|
||||
.ДобавитьТест("ОписаниеТеста")
|
||||
.ДобавитьТест("ОписаниеТеста_Теги")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -42,6 +43,8 @@
|
||||
Процедура ЗаписатьОтчет() Экспорт
|
||||
|
||||
РезультатТестирования = ТестовыеДанные.РезультатТестирования();
|
||||
РезультатТестирования[0].Теги = ЮТКоллекции.ЗначениеВМассиве("Тестовый модуль");
|
||||
|
||||
Каталог = ЮТест.Данные().НовоеИмяВременногоФайла();
|
||||
СоздатьКаталог(Каталог);
|
||||
Формат = ЮТОтчетAllureСлужебный.ПараметрыГенерацииОтчета().Форматы.allure;
|
||||
@ -77,6 +80,23 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОписаниеТеста_Теги() Экспорт
|
||||
|
||||
Модуль = ТестовыеДанные.ОписаниеТестовогоМодуля();
|
||||
Набор = ТестовыеДанные.ОписаниеТестовогоНабора(Модуль);
|
||||
Тест = ТестовыеДанные.ОписаниеТеста(Набор);
|
||||
|
||||
Модуль.Теги = ЮТСтроки.РазделитьСтроку("Модуль, Тег1, Тег 2", ",");
|
||||
Набор.Теги = ЮТСтроки.РазделитьСтроку("Набор, ТЕГ 2, Тег3", ",");
|
||||
Тест.Теги = СтрРазделить("Тест, тег3, тег4", ", ", Ложь);
|
||||
ОписаниеТеста = ЮТОтчетAllureСлужебный.ОписаниеТеста(Тест, Набор, Модуль);
|
||||
|
||||
Для Каждого Метка Из ЮТСтроки.РазделитьСтроку("Модуль, Набор, Тест, Тег 2, Тег3, тег4", ",") Цикл
|
||||
СодержитМетку(ОписаниеТеста, "tag", Метка);
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -24,6 +24,7 @@
|
||||
.ДобавитьТест("ДобавитьСтроку")
|
||||
.ДобавитьТест("СтрокаСимволов")
|
||||
.ДобавитьТест("СравнитьВерсии")
|
||||
.ДобавитьТест("УникальныеСтроки")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -87,6 +88,19 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УникальныеСтроки() Экспорт
|
||||
|
||||
Вход = СтрРазделить("Раз,раз, раз,проверка", ",");
|
||||
|
||||
ЮТест.ОжидаетЧто(ЮТСтроки.УникальныеСтроки(Вход))
|
||||
.Содержит("Раз")
|
||||
.НеСодержит("раз")
|
||||
.Содержит(" раз")
|
||||
.Содержит("проверка")
|
||||
.ИмеетДлину(3);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты.УдалениеТестовыхДанных()
|
||||
ЮТТесты.Тег("ТестовыеДанные").УдалениеТестовыхДанных()
|
||||
.ДобавитьТест("Удалить")
|
||||
.ДобавитьТест("ВариантыПараметров")
|
||||
.ДобавитьТест("СоздатьГруппу")
|
||||
|
@ -23,7 +23,7 @@
|
||||
КодТовара = ЮТОбщий.ЧислоВСтроку(ЮТест.Данные().СлучайноеПоложительноеЧисло(999999999));
|
||||
Период = ТекущаяДата();
|
||||
|
||||
ЮТТесты.УдалениеТестовыхДанных()
|
||||
ЮТТесты.Тег("ТестовыеДанные").УдалениеТестовыхДанных()
|
||||
.ДобавитьТест("Фикция")
|
||||
.СПараметрами(Новый ОписаниеТипов("Число"))
|
||||
.СПараметрами(Новый ОписаниеТипов("Строка"))
|
||||
|
@ -24,34 +24,41 @@
|
||||
.ДобавитьТест("ЭтоПодходящееРасширение")
|
||||
.ДобавитьТест("ЭтоПодходящийМодуль")
|
||||
.ДобавитьТест("ОтфильтроватьТестовыеНаборы")
|
||||
;
|
||||
.Добавитьтест("Фильтр_ПолноеИмяТеста")
|
||||
.Добавитьтест("Фильтр_Контексты")
|
||||
.Добавитьтест("Фильтр_ТегиМодуля")
|
||||
.Добавитьтест("Фильтр_ТегиНабора")
|
||||
.Добавитьтест("Фильтр_ТегиТеста")
|
||||
.Добавитьтест("Фильтр_Наборы")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЭтоПодходящееРасширение() Экспорт
|
||||
|
||||
Варианты = Новый Массив();
|
||||
Ключи = "ИмяРасширения, Параметры, Результат, Описание";
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.extensions = ЮТКоллекции.ЗначениеВМассиве("test", "тесты");
|
||||
Варианты.Добавить(Новый Структура(Ключи, "test", Параметры, Истина, "Простой кейс"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "TeST", Параметры, Истина, "Изменен регистр"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "тесты", Параметры, Истина, "Второе расширение"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "_test", Параметры, Ложь, "Отсутствующее расширение"));
|
||||
Варианты = ЮТест.Варианты("ИмяРасширения, Параметры, Результат, Описание");
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Варианты.Добавить(Новый Структура(Ключи, "test", Параметры, Истина, "Без фильтр по расширениям 1"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "_test", Параметры, Истина, "Без фильтр по расширениям 2"));
|
||||
Параметры.filter.extensions = ЮТКоллекции.ЗначениеВМассиве("test", "тесты");
|
||||
Варианты.Добавить("test", Параметры, Истина, "Простой кейс");
|
||||
Варианты.Добавить("TeST", Параметры, Истина, "Изменен регистр");
|
||||
Варианты.Добавить("тесты", Параметры, Истина, "Второе расширение");
|
||||
Варианты.Добавить("_test", Параметры, Ложь, "Отсутствующее расширение");
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Варианты.Добавить("test", Параметры, Истина, "Без фильтр по расширениям 1");
|
||||
Варианты.Добавить("_test", Параметры, Истина, "Без фильтр по расширениям 2");
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("test.method");
|
||||
Варианты.Добавить(Новый Структура(Ключи, "test", Параметры, Истина, "Фильтр по пути"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "_test", Параметры, Истина, "Фильтр по пути, отпустствующее расширение"));
|
||||
Варианты.Добавить("test", Параметры, Истина, "Фильтр по пути");
|
||||
Варианты.Добавить("_test", Параметры, Истина, "Фильтр по пути, отпустствующее расширение");
|
||||
|
||||
Для Каждого Вариант Из Варианты Цикл
|
||||
Для Каждого Вариант Из Варианты.СписокВариантов() Цикл
|
||||
|
||||
ЮТФильтрацияСлужебный.УстановитьКонтекст(Вариант.Параметры);
|
||||
УстановитьФильтр(Вариант.Параметры);
|
||||
Результат = ЮТФильтрацияСлужебный.ЭтоПодходящееРасширение(Вариант.ИмяРасширения);
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат, Вариант.Описание).Равно(Вариант.Результат);
|
||||
|
||||
КонецЦикла;
|
||||
@ -60,90 +67,66 @@
|
||||
|
||||
Процедура ЭтоПодходящийМодуль() Экспорт
|
||||
|
||||
Варианты = Новый Массив();
|
||||
Ключи = "ИмяМодуля, Параметры, Результат, Описание";
|
||||
Варианты = ЮТест.Варианты("ИмяМодуля, Параметры, Результат, Описание");
|
||||
РасширениеПоУмолчанию = "__тесты___";
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("test", "тесты");
|
||||
Варианты.Добавить(Новый Структура(Ключи, "test", Параметры, Истина, "Простой кейс"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "TeST", Параметры, Истина, "Изменен регистр"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "тесты", Параметры, Истина, "Второй модуль"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "_test", Параметры, Ложь, "Отсутствующий модуль"));
|
||||
|
||||
Варианты.Добавить("test", Параметры, Истина, "Простой кейс");
|
||||
Варианты.Добавить("TeST", Параметры, Истина, "Изменен регистр");
|
||||
Варианты.Добавить("тесты", Параметры, Истина, "Второй модуль");
|
||||
Варианты.Добавить("_test", Параметры, Ложь, "Отсутствующий модуль");
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Истина, "Без фильтр по `module`"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "_module", Параметры, Истина, "Без фильтр по `_module`"));
|
||||
|
||||
Варианты.Добавить("module", Параметры, Истина, "Без фильтр по `module`");
|
||||
Варианты.Добавить("_module", Параметры, Истина, "Без фильтр по `_module`");
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("module");
|
||||
Параметры.filter.extensions = ЮТКоллекции.ЗначениеВМассиве(РасширениеПоУмолчанию);
|
||||
Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Истина, "Фильтр по модулю и по расширению с пересечением"));
|
||||
|
||||
Варианты.Добавить("module", Параметры, Истина, "Фильтр по модулю и по расширению с пересечением");
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("module");
|
||||
Параметры.filter.extensions = ЮТКоллекции.ЗначениеВМассиве("тесты");
|
||||
Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Ложь, "Фильтр по модулю и по расширению без пересечения"));
|
||||
Варианты.Добавить("module", Параметры, Ложь, "Фильтр по модулю и по расширению без пересечения");
|
||||
|
||||
// Фильтрация по именам тестовых методов
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("module.method");
|
||||
Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Истина, "Фильтр по имени теста"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "_test", Параметры, Ложь, "Фильтр по имени теста, отсутствующему модулю"));
|
||||
Варианты.Добавить("module", Параметры, Истина, "Фильтр по имени теста");
|
||||
Варианты.Добавить("_test", Параметры, Ложь, "Фильтр по имени теста, отсутствующему модулю");
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("module.method");
|
||||
Параметры.filter.extensions = ЮТКоллекции.ЗначениеВМассиве(РасширениеПоУмолчанию);
|
||||
Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Истина, "Фильтр по имени теста и по расширению с пересечением"));
|
||||
Варианты.Добавить("module", Параметры, Истина, "Фильтр по имени теста и по расширению с пересечением");
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("module.method");
|
||||
Параметры.filter.extensions = ЮТКоллекции.ЗначениеВМассиве("test");
|
||||
Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Ложь, "Фильтр по имени теста и по расширению без пересечения"));
|
||||
Варианты.Добавить("module", Параметры, Ложь, "Фильтр по имени теста и по расширению без пересечения");
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("module.method");
|
||||
Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("module");
|
||||
Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Истина, "Фильтр по имени теста и по модулю с пересечением"));
|
||||
Варианты.Добавить("module", Параметры, Истина, "Фильтр по имени теста и по модулю с пересечением");
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("module.method");
|
||||
Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("test");
|
||||
Варианты.Добавить(Новый Структура(Ключи, "module", Параметры, Ложь, "Фильтр по имени теста и по модулю без пересечения"));
|
||||
Варианты.Добавить("module", Параметры, Ложь, "Фильтр по имени теста и по модулю без пересечения");
|
||||
|
||||
Для Каждого Вариант Из Варианты Цикл
|
||||
Для Каждого Вариант Из Варианты.СписокВариантов() Цикл
|
||||
|
||||
УстановитьФильтр(Вариант.Параметры);
|
||||
ОписаниеМодуля = МетаданныеМодуля(Вариант.ИмяМодуля, РасширениеПоУмолчанию);
|
||||
|
||||
ЮТФильтрацияСлужебный.УстановитьКонтекст(Вариант.Параметры);
|
||||
ОписаниеМодуля = ЮТФабрикаСлужебный.ОписаниеМодуля();
|
||||
ОписаниеМодуля.Имя = Вариант.ИмяМодуля;
|
||||
ОписаниеМодуля.Расширение = РасширениеПоУмолчанию;
|
||||
Результат = ЮТФильтрацияСлужебный.ЭтоПодходящийМодуль(ОписаниеМодуля);
|
||||
ЮТест.ОжидаетЧто(Результат, Вариант.Описание + ". Имя модуля:" + Вариант.ИмяМодуля).Равно(Вариант.Результат);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЭтоПодходящийМетод() Экспорт
|
||||
|
||||
Варианты = Новый Массив();
|
||||
Ключи = "ИмяМодуля, Параметры, Результат, Описание";
|
||||
РасширениеПоУмолчанию = "__тесты___";
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.modules = ЮТКоллекции.ЗначениеВМассиве("test", "тесты");
|
||||
Варианты.Добавить(Новый Структура(Ключи, "test", Параметры, Истина, "Простой кейс"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "TeST", Параметры, Истина, "Изменен регистр"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "тесты", Параметры, Истина, "Второй модуль"));
|
||||
Варианты.Добавить(Новый Структура(Ключи, "_test", Параметры, Ложь, "Отсутствующий модуль"));
|
||||
|
||||
Для Каждого Вариант Из Варианты Цикл
|
||||
|
||||
ЮТФильтрацияСлужебный.УстановитьКонтекст(Вариант.Параметры);
|
||||
ОписаниеМодуля = ЮТФабрикаСлужебный.ОписаниеМодуля();
|
||||
ОписаниеМодуля.Имя = Вариант.ИмяМодуля;
|
||||
ОписаниеМодуля.Расширение = РасширениеПоУмолчанию;
|
||||
Результат = ЮТФильтрацияСлужебный.ЭтоПодходящийМодуль(ОписаниеМодуля);
|
||||
ЮТест.ОжидаетЧто(Результат, Вариант.Описание + ". Имя модуля:" + Вариант.ИмяМодуля).Равно(Вариант.Результат);
|
||||
|
||||
КонецЦикла;
|
||||
@ -155,67 +138,280 @@
|
||||
// 1
|
||||
Контексты = ЮТФабрика.КонтекстыВызова();
|
||||
|
||||
ОписаниеМодуля = ЮТФабрикаСлужебный.ОписаниеМодуля();
|
||||
ОписаниеМодуля.Имя = "ТестовыйМодуль";
|
||||
ОписаниеМодуля.Расширение = "ТестовоеРасширение";
|
||||
ОписаниеМодуля.Сервер = Истина;
|
||||
ОписаниеМодуля.КлиентУправляемоеПриложение = Истина;
|
||||
|
||||
Наборы = Новый Массив();
|
||||
Набор = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора("Тесты");
|
||||
Тест = ЮТФабрикаСлужебный.ОписаниеТеста("Тест1", "Тест 1", ЮТКоллекции.ЗначениеВМассиве(Контексты.Сервер, Контексты.КлиентУправляемоеПриложение));
|
||||
Набор = ОписаниеНабораТестов("Тесты");
|
||||
Тест = ОписаниеТеста("Тест1","Сервер, КлиентУправляемоеПриложение");
|
||||
Набор.Тесты.Добавить(Тест);
|
||||
Наборы.Добавить(Набор);
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("ТестовыйМодуль.Тест1");
|
||||
ЮТФильтрацияСлужебный.УстановитьКонтекст(Параметры);
|
||||
ОписаниеМодуля = ОписаниеМодуля();
|
||||
ОписаниеМодуля.МетаданныеМодуля.Сервер = Истина;
|
||||
ОписаниеМодуля.МетаданныеМодуля.КлиентУправляемоеПриложение = Истина;
|
||||
|
||||
Результат = ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля);
|
||||
ЮТест.ОжидаетЧто(Результат, "Результат фильтрации")
|
||||
ДобавитьКопиюНабора(ОписаниеМодуля, Набор);
|
||||
|
||||
УстановитьНовыйФильтр(, "ТестовыйМодуль.Тест1");
|
||||
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов, "Результат фильтрации")
|
||||
.Заполнено()
|
||||
.ИмеетТип("Массив");
|
||||
НаборРезультата = Результат[0];
|
||||
ЮТест.ОжидаетЧто(НаборРезультата, "Набор результата")
|
||||
.Заполнено()
|
||||
.Свойство("Имя").Равно(Набор.Имя)
|
||||
.Свойство("Представление").Равно(Набор.Представление)
|
||||
.Свойство("Тесты").Заполнено();
|
||||
ТестРезультата = НаборРезультата.Тесты[0];
|
||||
ЮТест.ОжидаетЧто(ТестРезультата, "Тест результата")
|
||||
.Свойство("Имя").Равно(Тест.Имя)
|
||||
.Свойство("КонтекстВызова").ИмеетДлину(2);
|
||||
.Свойство("[0].Тесты").Заполнено()
|
||||
.Что(ОписаниеМодуля.НаборыТестов[0].Тесты[0], "Тест результата")
|
||||
.Свойство("Имя").Равно("Тест1")
|
||||
.Свойство("КонтекстВызова").ИмеетДлину(2);
|
||||
|
||||
// 2
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("ТестовыйМодуль.Тест1.Сервер");
|
||||
ЮТФильтрацияСлужебный.УстановитьКонтекст(Параметры);
|
||||
ОписаниеМодуля.НаборыТестов.Очистить();
|
||||
ДобавитьКопиюНабора(ОписаниеМодуля, Набор);
|
||||
УстановитьНовыйФильтр(, "ТестовыйМодуль.Тест1.Сервер");
|
||||
|
||||
Результат = ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля);
|
||||
ТестРезультата = Результат[0].Тесты[0];
|
||||
ЮТест.ОжидаетЧто(ТестРезультата, "Тест с указанием контекста")
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов[0].Тесты[0], "Тест с указанием контекста")
|
||||
.Свойство("Имя").Равно(Тест.Имя)
|
||||
.Свойство("КонтекстВызова").ИмеетДлину(1);
|
||||
|
||||
// 3
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("ТестовыйМодуль.Тест1.ВызовСервера");
|
||||
ЮТФильтрацияСлужебный.УстановитьКонтекст(Параметры);
|
||||
ОписаниеМодуля.НаборыТестов.Очистить();
|
||||
ДобавитьКопиюНабора(ОписаниеМодуля, Набор);
|
||||
УстановитьНовыйФильтр(, "ТестовыйМодуль.Тест1.ВызовСервера");
|
||||
|
||||
Результат = ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля);
|
||||
ЮТест.ОжидаетЧто(Результат, "Тест с указаниме недоступного контекста")
|
||||
.ИмеетДлину(1);
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов, "Тест с указаниме недоступного контекста")
|
||||
.ИмеетДлину(0);
|
||||
|
||||
// 4
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
Параметры.filter.tests = ЮТКоллекции.ЗначениеВМассиве("ТестовыйМодуль.Тест1.Сервер");
|
||||
Параметры.filter.contexts = ЮТКоллекции.ЗначениеВМассиве(Контексты.КлиентУправляемоеПриложение);
|
||||
ЮТФильтрацияСлужебный.УстановитьКонтекст(Параметры);
|
||||
ОписаниеМодуля.НаборыТестов.Очистить();
|
||||
ДобавитьКопиюНабора(ОписаниеМодуля, Набор);
|
||||
УстановитьНовыйФильтр(, "ТестовыйМодуль.Тест1.Сервер", "КлиентУправляемоеПриложение");
|
||||
|
||||
Результат = ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(Наборы, ОписаниеМодуля);
|
||||
ЮТест.ОжидаетЧто(Результат, "Тест с указаниме контекста и фильтра контекстов")
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов, "Тест с указаниме контекста и фильтра контекстов")
|
||||
.ИмеетДлину(0);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Фильтр_ПолноеИмяТеста() Экспорт
|
||||
|
||||
ИмяМодуля = "ТестовыйМодуль";
|
||||
ИмяТеста = "ТестовыйТест";
|
||||
|
||||
ОписаниеМодуля = ОписаниеМодуля(ИмяМодуля);
|
||||
НаборТестов = ОписаниеНабораТестов();
|
||||
НаборТестов.Тесты.Добавить(ОписаниеТеста(ИмяТеста));
|
||||
НаборТестов.Тесты.Добавить(ОписаниеТеста(ИмяТеста, "Сервер"));
|
||||
НаборТестов.Тесты.Добавить(ОписаниеТеста(ИмяТеста + "_"));
|
||||
НаборТестов.Тесты.Добавить(ОписаниеТеста(ИмяТеста, "НеСервер"));
|
||||
НаборТестов.Тесты.Добавить(ОписаниеТеста());
|
||||
ДобавитьКопиюНабора(ОписаниеМодуля, НаборТестов);
|
||||
|
||||
УстановитьНовыйФильтр(, СтрШаблон("%1.%2", ИмяМодуля, ИмяТеста));
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов)
|
||||
.ИмеетДлину(1)
|
||||
.Свойство("[0].Тесты").ИмеетДлину(2);
|
||||
|
||||
УстановитьНовыйФильтр(, СтрШаблон("%1.%2.КлиентУправляемоеПриложение", ИмяМодуля, ИмяТеста));
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов)
|
||||
.ИмеетДлину(1)
|
||||
.Свойство("[0].Тесты").ИмеетДлину(1);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Фильтр_Контексты() Экспорт
|
||||
|
||||
ОписаниеМодуля = ОписаниеМодуля();
|
||||
НаборТестов = ОписаниеНабораТестов();
|
||||
НаборТестов.Тесты.Добавить(ОписаниеТеста()); // +
|
||||
НаборТестов.Тесты.Добавить(ОписаниеТеста(, "Сервер")); // +
|
||||
НаборТестов.Тесты.Добавить(ОписаниеТеста(, "Сервер, Сервер")); // +
|
||||
НаборТестов.Тесты.Добавить(ОписаниеТеста(, "Клиент"));
|
||||
ОписаниеМодуля.НаборыТестов.Добавить(НаборТестов);
|
||||
|
||||
УстановитьНовыйФильтр(, , "Сервер");
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов)
|
||||
.ИмеетДлину(1)
|
||||
.Свойство("[0].Тесты").ИмеетДлину(3);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Фильтр_ТегиТеста() Экспорт
|
||||
|
||||
ОписаниеМодуля = ОписаниеМодуляДляТестированияФильтрации();
|
||||
|
||||
УстановитьНовыйФильтр(, , , "Тег Теста1, ТегТеста2, Т, _, Тег111");
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов)
|
||||
.ИмеетДлину(2)
|
||||
.Свойство("[0].Тесты").ИмеетДлину(3)
|
||||
.Свойство("[1].Тесты").ИмеетДлину(1);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Фильтр_ТегиНабора() Экспорт
|
||||
|
||||
ОписаниеМодуля = ОписаниеМодуляДляТестированияФильтрации();
|
||||
|
||||
УстановитьНовыйФильтр(, , , "Тег Набора");
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов)
|
||||
.ИмеетДлину(1)
|
||||
.Свойство("[0].Тесты").ИмеетДлину(5);
|
||||
|
||||
ОписаниеМодуля = ОписаниеМодуляДляТестированияФильтрации();
|
||||
|
||||
УстановитьНовыйФильтр(, , , "Тег Набора, ТегТеста");
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов)
|
||||
.ИмеетДлину(2)
|
||||
.Свойство("[0].Тесты").ИмеетДлину(5)
|
||||
.Свойство("[1].Тесты").ИмеетДлину(1);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Фильтр_ТегиМодуля() Экспорт
|
||||
|
||||
ОписаниеМодуля = ОписаниеМодуляДляТестированияФильтрации();
|
||||
УстановитьНовыйФильтр(, , , "Тег Модуля");
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов)
|
||||
.ИмеетДлину(0);
|
||||
|
||||
ОписаниеМодуля = ОписаниеМодуляДляТестированияФильтрации();
|
||||
ОписаниеМодуля.Теги.Добавить("Тег Модуля");
|
||||
|
||||
УстановитьНовыйФильтр(, , , "Тег Модуля");
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов)
|
||||
.ИмеетДлину(2)
|
||||
.Свойство("[0].Тесты").ИмеетДлину(5)
|
||||
.Свойство("[1].Тесты").ИмеетДлину(2);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Фильтр_Наборы() Экспорт
|
||||
|
||||
ОписаниеМодуля = ОписаниеМодуляДляТестированияФильтрации();
|
||||
ОписаниеМодуля.НаборыТестов[1].Имя = "ТестовыйНабор2";
|
||||
УстановитьНовыйФильтр(, , , , "ТестовыйНабор");
|
||||
ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеМодуля);
|
||||
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля.НаборыТестов)
|
||||
.ИмеетДлину(1)
|
||||
.Свойство("[0].Тесты").ИмеетДлину(5)
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура УстановитьНовыйФильтр(Модули = Неопределено,
|
||||
Тесты = Неопределено,
|
||||
Контексты = Неопределено,
|
||||
Теги = Неопределено,
|
||||
Наборы = Неопределено)
|
||||
|
||||
Параметры = ЮТФабрика.ПараметрыЗапуска();
|
||||
|
||||
Если Наборы <> Неопределено Тогда
|
||||
Параметры.filter.suites = ЮТСтроки.РазделитьСтроку(Наборы, ",");
|
||||
КонецЕсли;
|
||||
|
||||
Если Тесты <> Неопределено Тогда
|
||||
Параметры.filter.tests = ЮТСтроки.РазделитьСтроку(Тесты, ",");
|
||||
КонецЕсли;
|
||||
|
||||
Если Модули <> Неопределено Тогда
|
||||
Параметры.filter.modules = ЮТСтроки.РазделитьСтроку(Модули, ",");
|
||||
КонецЕсли;
|
||||
|
||||
Если Теги <> Неопределено Тогда
|
||||
Параметры.filter.tags = ЮТСтроки.РазделитьСтроку(Теги, ",");
|
||||
КонецЕсли;
|
||||
|
||||
Если Контексты <> Неопределено Тогда
|
||||
Параметры.filter.contexts = ЮТСтроки.РазделитьСтроку(Контексты, ",");
|
||||
КонецЕсли;
|
||||
|
||||
УстановитьФильтр(Параметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьФильтр(Параметры)
|
||||
|
||||
ЮТФильтрацияСлужебный.УстановитьКонтекст(Параметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция МетаданныеМодуля(ИмяМодуля = "ТестовыйМодуль", Расширение = "ТестовоеРасширение")
|
||||
|
||||
МетаданныеМодуля = ЮТФабрикаСлужебный.ОписаниеМодуля();
|
||||
МетаданныеМодуля.Имя = ИмяМодуля;
|
||||
МетаданныеМодуля.Расширение = Расширение;
|
||||
|
||||
Возврат МетаданныеМодуля;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеМодуля(ИмяМодуля = "ТестовыйМодуль")
|
||||
|
||||
Возврат ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля(МетаданныеМодуля(ИмяМодуля), Новый Массив());
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеНабораТестов(Имя = "ТестовыйНабор", Теги = "")
|
||||
|
||||
Возврат ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(Имя, Теги);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеТеста(ИмяТеста = Неопределено, КонтекстыВызова = "Сервер, КлиентУправляемоеПриложение", Теги = "")
|
||||
|
||||
Если ИмяТеста = Неопределено Тогда
|
||||
ИмяТеста = ЮТест.Данные().СлучайнаяСтрока();
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЮТФабрикаСлужебный.ОписаниеТеста(ИмяТеста,
|
||||
ЮТест.Данные().СлучайнаяСтрока(),
|
||||
ЮТСтроки.РазделитьСтроку(КонтекстыВызова, ","),
|
||||
Теги);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьКопиюНабора(ОписаниеМодуля, Набор)
|
||||
|
||||
ОписаниеМодуля.НаборыТестов.ДОбавить(ЮТКоллекции.СкопироватьРекурсивно(Набор));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ОписаниеМодуляДляТестированияФильтрации()
|
||||
|
||||
Набор1 = ОписаниеНабораТестов();
|
||||
Набор1.Теги = ЮТКоллекции.ЗначениеВМассиве("Тег набора");
|
||||
Набор1.Тесты.Добавить(ОписаниеТеста());
|
||||
Набор1.Тесты.Добавить(ОписаниеТеста(, , "Тег Теста1"));
|
||||
Набор1.Тесты.Добавить(ОписаниеТеста(, , "Тег Теста1, ТегТеста2"));
|
||||
Набор1.Тесты.Добавить(ОписаниеТеста(, , "ТегТеста"));
|
||||
Набор1.Тесты.Добавить(ОписаниеТеста(, , "ТЕГ Теста1"));
|
||||
|
||||
Набор2 = ОписаниеНабораТестов();
|
||||
Набор2.Тесты.Добавить(ОписаниеТеста(, , "ТегТеста2"));
|
||||
Набор2.Тесты.Добавить(ОписаниеТеста(, , "ТегТеста"));
|
||||
|
||||
ОписаниеМодуля = ОписаниеМодуля();
|
||||
ОписаниеМодуля.НаборыТестов.Добавить(Набор1);
|
||||
ОписаниеМодуля.НаборыТестов.Добавить(Набор2);
|
||||
|
||||
Возврат ОписаниеМодуля;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты
|
||||
ЮТТесты.Тег("Мокирование")
|
||||
.ДобавитьТест("Конструктор")
|
||||
.ДобавитьТест("УстановитьТело")
|
||||
;
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты
|
||||
ЮТТесты.Тег("Мокирование")
|
||||
.ДобавитьТест("Инициализировать")
|
||||
.ДобавитьТест("Добавить")
|
||||
.ДобавитьТест("MoveFirst")
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
Процедура ИсполняемыеСценарии() Экспорт
|
||||
|
||||
ЮТТесты
|
||||
ЮТТесты.Тег("ТестовыеДанные")
|
||||
.ДобавитьТест("Установить")
|
||||
.ДобавитьТест("УстановитьРеквизиты")
|
||||
.ДобавитьТест("Фикция")
|
||||
|
32
tests/src/CommonModules/ТегиТестов/Module.bsl
Normal file
32
tests/src/CommonModules/ТегиТестов/Module.bsl
Normal file
@ -0,0 +1,32 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2023 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция Мокирование() Экспорт
|
||||
|
||||
ЮТТесты.Тег("Мокирование");
|
||||
Возврат ТегиТестов;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#КонецОбласти
|
11
tests/src/CommonModules/ТегиТестов/ТегиТестов.mdo
Normal file
11
tests/src/CommonModules/ТегиТестов/ТегиТестов.mdo
Normal 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="a92bd232-f801-4337-aae8-5e0ff73cd9fc">
|
||||
<name>ТегиТестов</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Теги тестов</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -39,6 +39,7 @@
|
||||
Описание.Вставить("НаборыТестов", Новый Массив);
|
||||
Описание.Вставить("Ошибки", Новый Массив);
|
||||
Описание.Вставить("НастройкиВыполнения", Новый Структура);
|
||||
Описание.Вставить("Теги", Новый Массив());
|
||||
|
||||
Описание.МетаданныеМодуля.Имя = СлучайнаяСтрокаЕслиНеопределено(ИмяМодуля);
|
||||
Описание.МетаданныеМодуля.ПолноеИмя = ЮТТестовыеДанные.СлучайнаяСтрока() + "." + Описание.МетаданныеМодуля.Имя;
|
||||
|
@ -65,6 +65,7 @@
|
||||
<commonModules>CommonModule.ПодпискиНаСобытия</commonModules>
|
||||
<commonModules>CommonModule.Пользователи</commonModules>
|
||||
<commonModules>CommonModule.ПомощникТестированияВызовСервера</commonModules>
|
||||
<commonModules>CommonModule.ТегиТестов</commonModules>
|
||||
<commonModules>CommonModule.ТестовыеДанные</commonModules>
|
||||
<catalogs>Catalog.Встречи</catalogs>
|
||||
<catalogs>Catalog.Товары</catalogs>
|
||||
|
Loading…
Reference in New Issue
Block a user