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