mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-03-17 20:48:01 +02:00
Merge pull request #87 from bia-technologies/feature/84
Установка настроек выполнения на уровне модуля
This commit is contained in:
commit
c76adbb0f7
@ -32,7 +32,7 @@ tags: [Getting started, Test data]
|
||||
Такие данные необходимо удалять самостоятельно при необходимости.
|
||||
:::
|
||||
|
||||
## Механизма удаления тестовых данных
|
||||
## Механизм удаления тестовых данных
|
||||
|
||||
Для включения нужно при регистрации теста вызвать метод `УдалениеТестовыхДанных()`
|
||||
|
||||
@ -58,7 +58,11 @@ tags: [Getting started, Test data]
|
||||
* Удалять данные созданные с клиента
|
||||
* Удалять данные созданные вне теста (в обработчиках событий)
|
||||
|
||||
:::tip
|
||||
:::caution Удаление и только
|
||||
Механизм только удаляет созданные объекты, изменения не откатываются
|
||||
:::
|
||||
|
||||
:::tip Разное время жизни данных
|
||||
Механизм понимает в рамках какого контекста исполнения (тест, набор, модуль) были созданы данные и удаляет их по выходу из него.
|
||||
:::
|
||||
|
||||
@ -66,7 +70,7 @@ tags: [Getting started, Test data]
|
||||
|
||||
```bsl title=УдалениеТестовыхДанныхВремяЖизни.bsl
|
||||
Процедура ПередВсемиТестами() Экспорт
|
||||
ДанныеМодуля = ЮТест.Данные().СоздатьЭлемент(); // Не будет удалена
|
||||
ДанныеМодуля = ЮТест.Данные().СоздатьЭлемент();
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПередТестовымНабором() Экспорт
|
||||
@ -84,13 +88,12 @@ tags: [Getting started, Test data]
|
||||
|
||||
Для переменных получим разное время жизни
|
||||
|
||||
* `ДанныеМодуля` - Не будет удалена, проблема будет решена в ближайшем будущем.
|
||||
* `ДанныеМодуля` - Живет, пока исполняются тесты модуля одного контекста (Сервер, Клиент).
|
||||
* `ДанныеНабора` - Живет, пока исполняются тесты набора.
|
||||
* `ДанныеТеста` и `Ссылка`- Живут, пока исполняется тест.
|
||||
* `ДанныеТеста` и `Ссылка` - Живут, пока исполняется тест.
|
||||
|
||||
:::caution Механизм имеет ряд ограничений и не работает для следующих кейсов:
|
||||
|
||||
* Данные создан не через API
|
||||
* Данные созданы в событии "ПередВсемиТестами" (работает для "ПередТестовымНабором")
|
||||
* Данные созданы в клиентском модуле через вызов своего серверного модуля, даже если он использует API тестового движка
|
||||
:::
|
||||
|
@ -47,6 +47,10 @@
|
||||
|
||||
Значение = КонтекстИсполнения.Набор.НастройкиВыполнения[ИмяНастройки];
|
||||
|
||||
ИначеЕсли КонтекстИсполнения.Модуль <> Неопределено И КонтекстИсполнения.Модуль.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
|
||||
|
||||
Значение = КонтекстИсполнения.Модуль.НастройкиВыполнения[ИмяНастройки];
|
||||
|
||||
Иначе
|
||||
|
||||
ГлобальныеНастройки = ЮТКонтекст.ГлобальныеНастройкиВыполнения();
|
||||
|
@ -166,10 +166,10 @@
|
||||
// Устанавливает настройку удаления созданных тестовых данных
|
||||
// В отличии от использования транзакции:
|
||||
//
|
||||
// * Умеет работь с данными созданными на клиенте
|
||||
// * Умеет работать с данными созданными на клиенте
|
||||
// * Только удаляет созданные данные и не откатывает изменения объектов
|
||||
// * Работает с данными созданными через API работы с тестовыми данными
|
||||
// * Удаляет данные созданные вне теста (в обработчиках событий, например, ПередТестовымНабором)
|
||||
// * Удаляет данные созданные вне теста (в обработчиках событий, например, ПередВсемиТестами и ПередТестовымНабором)
|
||||
//
|
||||
// Параметры:
|
||||
// УдалятьСозданныеДанные - Булево
|
||||
@ -367,12 +367,15 @@
|
||||
// Возвращаемое значение:
|
||||
// Структура - Исполняемые сценарии:
|
||||
// * ТестовыеНаборы - Массив из см. ЮТФабрика.ОписаниеТестовогоНабора - Тестовые наборы модуля
|
||||
// * НастройкиВыполнения- Структура - Настройки исполнения теста
|
||||
Функция ИсполняемыеСценарии(МетаданныеМодуля)
|
||||
|
||||
Структура = Новый Структура;
|
||||
Структура.Вставить("ТестовыеНаборы", Новый Массив());
|
||||
Структура.Вставить("НастройкиВыполнения", Новый Структура());
|
||||
|
||||
Набор = ЮТФабрика.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя);
|
||||
Набор.НастройкиВыполнения = Структура.НастройкиВыполнения; // Общие настройки с набором по умолчанию
|
||||
Структура.ТестовыеНаборы.Добавить(Набор);
|
||||
|
||||
Возврат Структура;
|
||||
|
@ -198,12 +198,14 @@
|
||||
// * МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
|
||||
// * НаборыТестов - Массив из см. ЮТФабрика.ОписаниеТестовогоНабора
|
||||
// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки
|
||||
// * НастройкиВыполнения- Структура - Настройки исполнения теста
|
||||
Функция ОписаниеТестовогоМодуля(МетаданныеМодуля, НаборыТестов) Экспорт
|
||||
|
||||
Описание = Новый Структура;
|
||||
Описание.Вставить("МетаданныеМодуля", МетаданныеМодуля);
|
||||
Описание.Вставить("НаборыТестов", НаборыТестов);
|
||||
Описание.Вставить("Ошибки", Новый Массив);
|
||||
Описание.Вставить("НастройкиВыполнения", Новый Структура());
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
|
@ -31,16 +31,15 @@
|
||||
|
||||
ЮТФильтрация.УстановитьКонтекст(ПараметрыЗапускаТестов);
|
||||
|
||||
Для Каждого ОписаниеМодуля Из ТестовыеМодули() Цикл
|
||||
Для Каждого МетаданныеМодуля Из ТестовыеМодули() Цикл
|
||||
|
||||
НаборыТестов = ТестовыеНаборыМодуля(ОписаниеМодуля, ПараметрыЗапускаТестов);
|
||||
ОписаниеТестовогоМодуля = ТестовыеНаборыМодуля(МетаданныеМодуля, ПараметрыЗапускаТестов);
|
||||
|
||||
Если НаборыТестов = Неопределено Тогда
|
||||
Если ОписаниеТестовогоМодуля = Неопределено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ТестовыйМодуль = ЮТФабрика.ОписаниеТестовогоМодуля(ОписаниеМодуля, НаборыТестов);
|
||||
Результат.Добавить(ТестовыйМодуль);
|
||||
Результат.Добавить(ОписаниеТестовогоМодуля);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@ -51,17 +50,19 @@
|
||||
// ПрочитатьНаборТестов
|
||||
// Читает набор тестов из модуля
|
||||
// Параметры:
|
||||
// ОписаниеМодуля - см. ЮТФабрика.ОписаниеМодуля
|
||||
// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Неопределено, Массив из см. ЮТФабрика.ОписаниеТестовогоНабора- Если прочитано, то будет возвращено описание наборов
|
||||
Функция ИсполняемыеСценарииМодуля(ОписаниеМодуля) Экспорт
|
||||
// - Неопределено - Если это не тестовый модуль
|
||||
// - см. ЮТФабрика.ОписаниеТестовогоМодуля
|
||||
Функция ИсполняемыеСценарииМодуля(МетаданныеМодуля) Экспорт
|
||||
|
||||
ЭтоТестовыйМодуль = Истина;
|
||||
ОписаниеТестовогоМодуля = ЮТФабрика.ОписаниеТестовогоМодуля(МетаданныеМодуля, Неопределено);
|
||||
|
||||
ЮТТесты.ПередЧтениемСценариевМодуля(ОписаниеМодуля);
|
||||
ЮТТесты.ПередЧтениемСценариевМодуля(МетаданныеМодуля);
|
||||
|
||||
ПолноеИмяМетода = ОписаниеМодуля.Имя + "." + ИмяМетодаСценариев();
|
||||
ПолноеИмяМетода = МетаданныеМодуля.Имя + "." + ИмяМетодаСценариев();
|
||||
Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода);
|
||||
|
||||
Если Ошибка <> Неопределено Тогда
|
||||
@ -81,26 +82,25 @@
|
||||
|
||||
Если Ошибка <> Неопределено Тогда
|
||||
|
||||
Данные = Новый Массив(); // Фиксируем, чтобы отобразить в отчете
|
||||
Описание = ЮТФабрика.ОписаниеТестовогоНабора(ОписаниеМодуля.Имя);
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуЧтенияТестов(Описание, "Ошибка формирования списка тестовых методов", Ошибка);
|
||||
|
||||
Данные.Добавить(Описание);
|
||||
НаборПоУмолчанию = ЮТФабрика.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя);
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуЧтенияТестов(НаборПоУмолчанию, "Ошибка формирования списка тестовых методов", Ошибка);
|
||||
ОписаниеТестовогоМодуля.НаборыТестов.Добавить(НаборПоУмолчанию);
|
||||
|
||||
ИначеЕсли ЭтоТестовыйМодуль Тогда
|
||||
|
||||
ЮТТесты.ПослеЧтенияСценариевМодуля();
|
||||
Сценарии = ЮТТесты.СценарииМодуля();
|
||||
|
||||
Данные = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Сценарии.ТестовыеНаборы, ОписаниеМодуля);
|
||||
ОписаниеТестовогоМодуля.НаборыТестов = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Сценарии.ТестовыеНаборы, МетаданныеМодуля);
|
||||
ОписаниеТестовогоМодуля.НастройкиВыполнения = Сценарии.НастройкиВыполнения;
|
||||
|
||||
Иначе
|
||||
|
||||
Данные = Неопределено;
|
||||
ОписаниеТестовогоМодуля = Неопределено;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Данные;
|
||||
Возврат ОписаниеТестовогоМодуля;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -171,34 +171,46 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ТестовыеНаборыМодуля(Модуль, ПараметрыЗапуска)
|
||||
Функция ТестовыеНаборыМодуля(МетаданныеМодуля, ПараметрыЗапуска)
|
||||
|
||||
// TODO Фильтрация по путям
|
||||
НаборыТестов = Неопределено;
|
||||
ОписаниеМодуля = Неопределено;
|
||||
|
||||
#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
|
||||
Если Модуль.КлиентОбычноеПриложение ИЛИ Модуль.КлиентУправляемоеПриложение Тогда
|
||||
НаборыТестов = ИсполняемыеСценарииМодуля(Модуль);
|
||||
ИначеЕсли Модуль.Сервер Тогда
|
||||
НаборыТестов = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(Модуль);
|
||||
Если МетаданныеМодуля.КлиентОбычноеПриложение ИЛИ МетаданныеМодуля.КлиентУправляемоеПриложение Тогда
|
||||
|
||||
ОписаниеМодуля = ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
|
||||
ИначеЕсли МетаданныеМодуля.Сервер Тогда
|
||||
|
||||
ОписаниеМодуля = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
ЮТЛогирование.ВывестиСерверныеСообщения();
|
||||
|
||||
КонецЕсли;
|
||||
#ИначеЕсли Сервер Тогда
|
||||
Если Модуль.Сервер Тогда
|
||||
НаборыТестов = ИсполняемыеСценарииМодуля(Модуль);
|
||||
Если МетаданныеМодуля.Сервер Тогда
|
||||
|
||||
ОписаниеМодуля = ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
|
||||
Иначе
|
||||
|
||||
ВызватьИсключение "Чтение списка тестов модуля в недоступном контексте";
|
||||
|
||||
КонецЕсли;
|
||||
#ИначеЕсли Клиент Тогда
|
||||
Если Модуль.КлиентУправляемоеПриложение Тогда
|
||||
НаборыТестов = ИсполняемыеСценарииМодуля(Модуль);
|
||||
ИначеЕсли Модуль.Сервер Тогда
|
||||
НаборыТестов = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(Модуль);
|
||||
Если МетаданныеМодуля.КлиентУправляемоеПриложение Тогда
|
||||
|
||||
ОписаниеМодуля = ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
|
||||
ИначеЕсли МетаданныеМодуля.Сервер Тогда
|
||||
|
||||
ОписаниеМодуля = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
ЮТЛогирование.ВывестиСерверныеСообщения();
|
||||
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Возврат НаборыТестов;
|
||||
|
||||
Возврат ОписаниеМодуля;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
.ВТранзакции()
|
||||
.УдалениеТестовыхДанных()
|
||||
.ДобавитьТест("Удалить")
|
||||
.ДобавитьТест("СобратьМассивВариантов");
|
||||
.ДобавитьТест("ВариантыПараметров");
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -58,13 +58,13 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СобратьМассивВариантов() Экспорт
|
||||
Процедура ВариантыПараметров() Экспорт
|
||||
|
||||
Ключи = "Числа, Строки";
|
||||
БазоваяСтруктура = Новый Структура(Ключи);
|
||||
Значения = Новый Структура(Ключи, ЮТОбщий.ЗначениеВМассиве(1, 2), ЮТОбщий.ЗначениеВМассиве("1", "2"));
|
||||
|
||||
Результат = ЮТест.Данные().СобратьМассивВариантов(БазоваяСтруктура, Значения);
|
||||
Результат = ЮТест.Данные().ВариантыПараметров(БазоваяСтруктура, Значения);
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Массив")
|
||||
|
@ -107,6 +107,7 @@
|
||||
|
||||
Ссылки = Новый Структура("Набор, Тест");
|
||||
ЮТест.Контекст().УстановитьЗначение("Ссылки", Ссылки);
|
||||
СоздатьСсылку("Модуль", "Модуль"); // Если данные созданные в этом событии не удаляются то прогон в другом контексте долже упасть (на сервере)
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -108,15 +108,17 @@
|
||||
МетаданныеМодуля.Вставить("ВызовСервера", Ложь);
|
||||
|
||||
ЮТФильтрация.УстановитьКонтекст(Новый Структура("filter", Новый Структура));
|
||||
Сценарии = ЮТЧитатель.ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
ОписаниеМодуля = ЮТЧитатель.ИсполняемыеСценарииМодуля(МетаданныеМодуля);
|
||||
|
||||
ЮТест.ОжидаетЧто(Сценарии, "Сценарии")
|
||||
.ИмеетТип("Массив")
|
||||
ЮТест.ОжидаетЧто(ОписаниеМодуля, "ОписаниеМодуля")
|
||||
.ИмеетТип("Структура")
|
||||
.Свойство("НаборыТестов")
|
||||
.ИмеетДлину(3)
|
||||
.Элемент(0).ИмеетТип("Структура")
|
||||
.Элемент(1).ИмеетТип("Структура")
|
||||
.Элемент(2).ИмеетТип("Структура")
|
||||
.Элемент("НаборыТестов[0]").ИмеетТип("Структура")
|
||||
.Элемент("НаборыТестов[1]").ИмеетТип("Структура")
|
||||
.Элемент("НаборыТестов[2]").ИмеетТип("Структура")
|
||||
;
|
||||
Сценарии = ОписаниеМодуля.НаборыТестов;
|
||||
|
||||
НаборПоУмолчанию = Сценарии[0];
|
||||
НаборЭтоТестовыйМодуль = Сценарии[1];
|
||||
|
Loading…
x
Reference in New Issue
Block a user