Перейти к основному содержимому

События

События тестов

События тестов можно использовать для настройки тестового окружения:

  • Установка констант и других настроек.
  • Создание тестовых данных.
  • Удаление созданных данных.
  • Если результат обработки события необходимо передать в тест, то это можно сделать с помощью контекста

Вот некоторые из событий, которые могут быть интересны разработчикам:

  • ПередВсемиТестами - Это событие вызывается перед прогоном тестов модуля в каждом контексте (&НаСервер и &НаКлиенте для клиент-серверного модуля). Это может быть полезно для установки общих настроек или данных, которые будут использоваться всеми тестами.
  • ПередТестовымНабором - Это событие вызывается перед прогоном тестов набора. Это может быть полезно для установки или переопределения для тестов набора настроек или данных.
  • ПередКаждымТестом - Это событие вызывается перед прогоном каждого теста. Это может быть полезно для установки специфических для теста настроек или данных.
  • ПослеКаждогоТеста - Это событие вызывается после прогона каждого теста. Это может быть полезно для очистки данных или настроек, установленных перед тестом.
  • ПослеТестовогоНабора - Это событие вызывается после прогона всех тестов набора.
  • ПослеВсехТестов - Это событие вызывается после прогона всех тестов модуля для контекста (после всех клиентских, либо после всех серверных).
Транзакция

При использовании транзакций (ЮТТесты.ВТранзакции()) события ПередКаждымТестом и ПослеКаждогоТеста включаются в транзакцию. Другие события выполняются вне транзакции.

Для обработки этих событий необходимо в тестовом модуле разместить одноименный экспортный метод без параметров.

Обработчики могут вызываться дважды

Важной особенностью всех событий, связанных с исполнением тестов, это то что они могут вызываться дважды - для клиента и для сервера. Если у нас есть клиент-серверный модуль с тестами доступными и на клиенте, и на сервер, то события будет вызвано дважды - и перед запуском клиентских, и перед запуском серверных тесов. Это касается всех событий, и события ПередВсемиТестами, и события ПослеКаждогоТеста

При необходимости разработчик может переопределить обработчики событий при регистрации тестов, вызвав Перед и/или После и указав имя нужного метода.

Процедура ИсполняемыеСценарии() Экспорт

ЮТТесты
.Перед("ПодготовитьДанныеДляТестов") // Переопределение обработчика выполняемого перед прогоном тестов модуля
.После("ОчиститьДанныеТестов") // Переопределение обработчика выполняемого после прогона тестов модуля
.ДобавитьТестовыйНабор("МойНаборТестов")
.ДобавитьТест("МойПервыйТест")
.ДобавитьТест("МойВторойТест")
.Перед("ПодготовитьДанныеДляПервогоТеста") // Переопределение обработчика для конкретного теста
.ДобавитьТестовыйНабор("МойДругойНаборТестов")
.Перед("ПодготовитьДанныеДругогоНабора") // Переопределение обработчика вызываемого перед прогоном набора тестов
.ДобавитьТест("МойТретийТест")

КонецПроцедуры

Также внутри событий можно получить информацию о текущем тесте, наборе или модуле.

ОписаниеТеста = ЮТест.ОписаниеТекущегоТеста();
ОписаниеНабора = ЮТест.ОписаниеТекущегоТестовогоНабора();
ОписаниеМодуля = ЮТест.ОписаниеТекущегоТестовогоМодуля();

События в движке

YAxUnit также использует события для работы внутренних механизмов:

Благодаря событиям вы можете развивать и адаптировать механизмы движка под себя, например:

  • Выполнять начальную подготовку базы или настройку движка перед прогонами
  • Реализовывать свои механизмы (например удаление данных с использованием подписок)
  • Формировать отчеты о тестировании online.

Подписка на события движка

Для подключения своих обработчиков событий вам необходимо:

  1. Создание структуры подсистем
    1. Создать свою подсистему (не рекомендуется использовать подсистемы движка) с именем оканчивающимся на ЮТПодключаемыеМодули, например, Тесты_ЮТПодключаемыеМодули.
    2. У созданной подсистемы снять флаг ВключатьВКомандныйИнтерфейс.
    3. Внутри нее создать подсистему с именем ОбработчикиСобытий.
    4. Внутри подсистемы ОбработчикиСобытий создать подсистемы для нужной группы событий:
      • Инициализация
      • ЗагрузкаТестов
      • ИсполнениеТестов
  2. Добавить общий модуль (или использовать подходящий существующий) в котором будут размещены обработчики событий.
  3. Сигнатура и описание обработчиков описаны ниже, примеры многих из них можно увидеть в движке.

Пример

Задача: необходимо по умолчанию включить настройку ВТранзакции для всех тестов.

Для этого необходимо подписаться на событие УстановитьПараметрыЗапускаПоУмолчанию, которое относится к блоку Инициализация

Структура подсистем: Структура подсистем

НастройкаYAxUnit
#Область СлужебныйПрограммныйИнтерфейс

// Установить настройки по умолчанию.
//
// Параметры:
// ПараметрыЗапуска - см. ЮТФабрика.ПараметрыЗапуска
Процедура УстановитьПараметрыЗапускаПоУмолчанию(ПараметрыЗапуска) Экспорт

ПараметрыЗапуска.settings.ВТранзакции = Истина;

КонецПроцедуры

#КонецОбласти

Описание событий движка

Инициализация

УстановитьПараметрыЗапускаПоУмолчанию(ПараметрыЗапуска)

&НаКлиенте.

Подписка на это событие позволяет:

  • выполнить базовую настройку параметров запуска
  • эту настройку можно переопределить параметрами запуска (json файл с тройками)
  • может быть полезно при расширении возможностей движка новыми л механизмами
  • обработчик может (а точнее, должен) изменять ПараметрыЗапуска

Параметры:

ИнициализацияКонтекста(ДанныеКонтекста)

&НаСервере и &НаКлиенте.

Вызывается при первичной инициализации глобального контекста.
Используется для первоначального заполнения контекста, параметра ДанныеКонтекста.

Параметры:

  • ДанныеКонтекста - Структура

Инициализация(ПараметрыЗапуска)

&НаКлиенте

Вызывается после инициализации контекстов и загрузки настроек. Позволяет выполнить настройку различных механизмов движка.

В этом обработчике нельзя менять параметр ПараметрыЗапуска.

Параметры:

ЗагрузкаТестов

ПередЧтениеСценариев(Отказ)

&НаКлиенте

Вызывается перед загрузкой тестов.

В событии можно отменить загрузку тестов установив параметр Отказ = Истина.

ПередЧтениемСценариевМодуля(МетаданныеМодуля)

&НаКлиенте/&НаСервере в зависимости от доступности модуля.

Вызывается перед чтением сценариев конкретного модуля (вызовом метода ИсполняемыеСценарии).
Позволяет настроить базовые параметры перед чтением настроек тестов модуля. Параметры:

  • МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля

ПослеЧтенияСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии)

&НаКлиенте/&НаСервере в зависимости от доступности модуля.

Позволяет настроить/обработать параметры загруженных настроек тестов модуля

Параметры:

  • МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля
  • ИсполняемыеСценарии - см. ЮТТестыСлужебный.СценарииМодуля

ПослеЧтенияСценариев(Сценарии)

&НаКлиенте

Вызывается после загрузки всех тестов.

ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули)

&НаКлиенте

Вызывается после формирования исполняемых тестов, сформированных на основе зарегистрированных тестов.

Например, из одного клиент-серверного теста формируется 2 исполняемых теста (для сервера и для клиента)

ФильтрацияТестов_ПроверкаМодуля(МетаданныеМодуля, Отказ)

&НаКлиенте

Вызывается при поиске тестовых модулей.

Позволяет отфильтровать "лишние" тестовые модули по своим правилам, если модуль не нужно грузить, просто установите параметр Отказ = Истина

ИсполнениеТестов

ПередВыполнениемТестов(ИсполняемыеМодули, Отказ)

&НаКлиенте

Перед запуском всех тестов.

В событии можно отменить запуск всех тестов установив параметр Отказ = Истина.

ПередВсемиТестамиМодуля(ОписаниеСобытия)

&НаКлиенте/&НаСервере в зависимости от доступности модуля.

Смотрите описание выше

ПередТестовымНабором(ОписаниеСобытия)

&НаКлиенте/&НаСервере в зависимости от доступности модуля.

Смотрите описание выше

ПередКаждымТестом(ОписаниеСобытия)

&НаКлиенте/&НаСервере в зависимости от доступности модуля.

Смотрите описание выше

ПослеКаждогоТеста(ОписаниеСобытия)

&НаКлиенте/&НаСервере в зависимости от доступности модуля.

Смотрите описание выше

ПослеТестовогоНабора(ОписаниеСобытия)

&НаКлиенте/&НаСервере в зависимости от доступности модуля.

Смотрите описание выше

ПослеВсехТестовМодуля(ОписаниеСобытия)

&НаКлиенте/&НаСервере в зависимости от доступности модуля.

Смотрите описание выше

ПослеВыполненияТестов(РезультатТестирования)

&НаКлиенте

После выполнения всех тестов.