События
События тестов
События тестов можно использовать для настройки тестового окружения:
- Установка констант и других настроек.
- Создание тестовых данных.
- Удаление созданных данных.
- Если результат обработки события необходимо передать в тест, то это можно сделать с помощью контекста
Вот некоторые из событий, которые могут быть интересны разработчикам:
ПередВсемиТестами
- Это событие вызывается перед прогоном тестов модуля в каждом контексте (&НаСервер
и&НаКлиенте
для клиент-серверного модуля). Это может быть полезно для установки общих настроек или данных, которые будут использоваться всеми тестами.ПередТестовымНабором
- Это событие вызывается перед прогоном тестов набора. Это может быть полезно для установки или переопределения для тестов набора настроек или данных.ПередКаждымТестом
- Это событие вызывается перед прогоном каждого теста. Это может быть полезно для установки специфических для теста настроек или данных.ПослеКаждогоТеста
- Это событие вызывается после прогона каждого теста. Это может быть полезно для очистки данных или настроек, установленных перед тестом.ПослеТестовогоНабора
- Это событие вызывается после прогона всех тестов набора.ПослеВсехТестов
- Это событие вызывается после прогона всех тестов модуля для контекста (после всех клиентских, либо после всех серверных).
При использовании транзакций (ЮТТесты.ВТранзакции()) события ПередКаждымТестом
и ПослеКаждогоТеста
включаются в транзакцию. Другие события выполняются вне транзакции.
Для обработки этих событий н еобходимо в тестовом модуле разместить одноименный экспортный метод без параметров.
Важной особенностью всех событий, связанных с исполнением тестов, это то что они могут вызываться дважды - для клиента и для сервера.
Если у нас есть клиент-серверный модуль с тестами доступными и на клиенте, и на сервер, то события будет вызвано дважды - и перед запуском клиентских, и перед запуском серверных тесов. Это касается всех событий, и события ПередВсемиТестами
, и события ПослеКаждогоТеста
При необходимости разработчик может переопределить обработчики событий при регистрации тестов, вызвав Перед
и/или После
и указав имя нужного метода.
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты
.Перед("ПодготовитьДанныеДляТестов") // Переопределение обработчика выполняемого перед прогоном тестов модуля
.После("ОчиститьДанныеТестов") // Переопределение обработчика выполняемого после прогона тестов модуля
.ДобавитьТестовыйНабор("МойНаборТестов")
.ДобавитьТест("МойПервыйТест")
.ДобавитьТест("МойВторойТест")
.Перед("ПодготовитьДанныеДляПервогоТеста") // Переопределение обработчика для конкретного теста
.ДобавитьТестовыйНабор("МойДругойНаборТестов")
.Перед("ПодготовитьДанныеДругогоНабора") // Переопределение обработчика вызываемого перед прогоном набора тестов
.ДобавитьТест("МойТретийТест")
КонецПроцедуры
Также внутри событий можно получить информацию о текущем тесте, наборе или модуле.
ОписаниеТеста = ЮТест.ОписаниеТекущегоТеста();
ОписаниеНабора = ЮТест.ОписаниеТекущегоТестовогоНабора();
ОписаниеМодуля = ЮТест.ОписаниеТекущегоТестовогоМодуля();
События в движке
YAxUnit также использует события для работы внутренних механизмов:
- Управление жизненным циклом контекстов
- Очистка тестовых данных
- Логирование
- и другие.
Благодаря событиям вы можете развивать и адаптировать механизмы движка под себя, например:
- Выполнять начальную подготовку базы или настройку движка перед прогонами
- Реализовывать свои механизмы (например удаление данных с использованием подписок)
- Формировать отчеты о тестировании online.
Подписка на события движка
Для подключения своих обработчиков событий вам необходимо:
- Создание структуры подсистем
- Создать свою подсистему (не рекомендуется использовать подсистемы движка) с именем оканчивающимся на
ЮТПодключаемыеМодули
, например,Тесты_ЮТПодключаемыеМодули
. - У созданной подсистемы снять флаг
ВключатьВКомандныйИнтерфейс
. - Внутри нее создать подсистему с именем
ОбработчикиСобытий
. - Внутри подсистемы
ОбработчикиСобытий
создать подсистемы для нужной группы событий:- Инициализация
- ЗагрузкаТестов
- ИсполнениеТестов
- Создать свою подсистему (не рекомендуется использовать подсистемы движка) с именем оканчивающимся на
- Добавить общий модуль (или использовать подходящий существующий) в котором будут размещены обработчики событий.
- Сигнатура и описание обработчиков описаны ниже, примеры многих из них можно увидеть в движке.
Пример
Задача: необходимо по умолчанию включить настройку ВТранзакции
для всех тестов.
Для этого необходимо подписаться на событие УстановитьПараметрыЗапускаПоУмолчанию
, которое относится к блоку Инициализация
Структура подсистем:
#Область СлужебныйПрограммныйИнтерфейс
// Установить настройки по умолчанию.
//
// Параметры:
// ПараметрыЗапуска - см. ЮТФабрика.ПараметрыЗапуска
Процедура УстановитьПараметрыЗапускаПоУмолчанию(ПараметрыЗапуска) Экспорт
ПараметрыЗапуска.settings.ВТранзакции = Истина;
КонецПроцедуры
#КонецОбласти
Описание событий движка
Инициализация
УстановитьПараметрыЗапускаПоУмолчанию(ПараметрыЗапуска)
&НаКлиенте
.
Подписка на это событие позволяет:
- выполнить базовую настройку параметров запуска
- эту настройку можно переопределить параметрами запуска (json файл с тройками)
- может быть полезно при расширении возможностей движка новыми л механизмами
- обработчик может (а точнее, должен) изменять
ПараметрыЗапуска
Параметры:
- ПараметрыЗапуска - см. ЮТФабрика.ПараметрыЗапуска
ИнициализацияКонтекста(ДанныеКонтекста)
&НаСервере
и &НаКлиенте
.
Вызывается при первичной инициализации глобального контекста.
Используется для первоначального заполнения контекста, параметра ДанныеКонтекста
.
Параметры:
- ДанныеКонтекста - Структура
Инициализация(ПараметрыЗапуска)
&НаКлиенте
Вызывается после инициализации контекстов и загрузки настроек. Позволяет выполнить настройку различных механизмов движка.
ПараметрыЗапуска
.Параметры:
- ПараметрыЗапуска - см. ЮТФабрика.ПараметрыЗапуска
ЗагрузкаТестов
ПередЧтениеСценариев(Отказ)
&НаКлиенте
Вызывается перед загрузкой тестов.
В событии можно отменить загрузку тестов установив параметр Отказ = Истина
.
ПередЧтениемСценариевМодуля(МетаданныеМодуля)
&НаКлиенте
/&НаСервере
в зависимости от доступности мод уля.
Вызывается перед чтением сценариев конкретного модуля (вызовом метода ИсполняемыеСценарии
).
Позволяет настроить базовые параметры перед чтением настроек тестов модуля.
Параметры:
- МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля
ПослеЧтенияСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии)
&НаКлиенте
/&НаСервере
в зависимости от доступности модуля.
Позволяет настроить/обработать параметры загруженных настроек тестов модуля
Параметры:
- МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля
- ИсполняемыеСценарии - см. ЮТТестыСлужебный.СценарииМодуля
ПослеЧтенияСценариев(Сценари и)
&НаКлиенте
Вызывается после загрузки всех тестов.
ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули)
&НаКлиенте
Вызывается после формирования исполняемых тестов, сформированных на основе зарегистрированных тестов.
Например, из одного клиент-серверного теста формируется 2 исполняемых теста (для сервера и для клиента)