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

Регистрация тестовых методов

Введение

Для того чтобы тестовые сценарии (методы) были обнаружены и корректно выполнены движком тестирования, разработчику необходимо зарегистрировать их. Регистрация сообщает движку, какие тесты существуют в модуле, как их запускать, с какими параметрами и в каких контекстах.

Регистрация выполняется внутри предопределённой экспортной процедуры ИсполняемыеСценарии, которая обязательно должна находиться в каждом тестовом модуле. В этой процедуре перечисляются все доступные тесты данного модуля.

warning

В процедуре ИсполняемыеСценарии не следует создавать тестовые данные или выполнять инициализацию окружения — она предназначена исключительно для регистрации тестов.

// Экспортная процедура регистрации тестов
Процедура ИсполняемыеСценарии() Экспорт
    // Регистрация тестов через модуль регистратор
    ЮТТесты
        // Группа математических методов
        .ДобавитьТестовыйНабор("Математические методы") // Создаём набор тестов
            .ДобавитьТест("Сложение") // Регистрируем тест: имя экспортной процедуры совпадает с именем теста
            .ДобавитьТест("Вычитание", "Разность чисел") // Можно указать отображаемое имя теста
            .ДобавитьТест("Вычитание", , , "Сервер") // Тест выполняется только в серверном контексте
            .ДобавитьКлиентскийТест("УмножениеНаКлиенте") // Тест выполняется только на клиенте
            .ДобавитьСерверныйТест("ДелениеНаСервере", "Деление на сервер") // Тест выполняется только на сервере
        // Группа строковых методов
        .ДобавитьТестовыйНабор("Строковые методы")
            .ДобавитьТест("ТестСтрНайти") // Тест поиска подстроки
            .ДобавитьТест("ТестСтрРазделить"); // Тест разделения строки
КонецПроцедуры

// Пример тестовой процедуры
Процедура Сложение() Экспорт
    // Тест сложения
КонецПроцедуры

В процедуре ИсполняемыеСценарии перечисляются все доступные тесты этого модуля.
Эта процедура вызывается движком для каждого тестового модуля при загрузке тестов, задолго до исполнения самих тестов.

Регистрация и настройка тестов выполняется через методы модуля ЮТТесты, который позволяет:

Основные методы регистрации тестов

ДобавитьТестовыйНабор

Создаёт и регистрирует новый тестовый набор, в который будут добавляться последующие тесты.

ЮТТесты.ДобавитьТестовыйНабор(Имя, ТегиСтрокой = "")
ПараметрТипОбязательныйОписаниеПо умолчанию
ИмяСтрокаИмя набора тестов
ТегиСтрокойСтрокаТеги через запятую""

Примеры:

// Простой набор
ЮТТесты
    .ДобавитьТестовыйНабор("Документы");

// Набор с тегами
ЮТТесты
    .ДобавитьТестовыйНабор("Проведение", "Критичный,Документы");

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

ДобавитьТест

Регистрирует тест, исполняемый во всех контекстах, где доступен модуль.

ЮТТесты.ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "", Контексты = Неопределено)
ПараметрТипОбязательныйОписаниеПо умолчанию
ИмяТестовогоМетодаСтрокаИмя экспортного метода
ПредставлениеТестаСтрокаОтображаемое имя""
ТегиСтрокойСтрокаТеги через запятую""
КонтекстыСтрокаКонтексты исполнения (например, "Сервер"). Доступные контексты: КлиентОбычноеПриложение, КлиентУправляемоеПриложение, СерверНеопределено

Примеры:

// Обычный тест
ЮТТесты
    .ДобавитьТест("Сложение");

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

// Только для сервера
ЮТТесты
    .ДобавитьТест("Проведение", , , "Сервер");

// С обработчиками и параметрами
ЮТТесты
    .ДобавитьТест("ПроверкаПараметров")
    .Перед("Подготовка")
    .После("Очистка")
    .СПараметрами(10, "abc");

ДобавитьКлиентскийТест

Регистрирует тест, исполняемый только на клиенте (КлиентОбычноеПриложение или КлиентУправляемоеПриложение).

ЮТТесты.ДобавитьКлиентскийТест(ИмяТестовогоМетода, ПредставлениеТеста = "", Теги = "")
ПараметрТипОбязательныйОписаниеПо умолчанию
ИмяТестовогоМетодаСтрокаИмя экспортного метода
ПредставлениеТестаСтрокаОтображаемое имя""
ТегиСтрокаТеги через запятую""

Примеры:

// Простой клиентский тест
ЮТТесты
    .ДобавитьКлиентскийТест("ПроверкаФормы");

// С параметрами
ЮТТесты
    .ДобавитьКлиентскийТест("ПроверкаФормы", "Номенклатура. Проверка формы элемента", "Номенклатура, ФормыОбъекта")
    .СПараметрами("Справочник.Номенклатура.Форма.ФормаОбъекта");

// С обработчиком
ЮТТесты
    .ДобавитьКлиентскийТест("ПроверкаФормы")
    .Перед("ПодготовкаКлиента");

ДобавитьСерверныйТест

Регистрирует тест, исполняемый только на сервере.

ЮТТесты.ДобавитьСерверныйТест(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "")
ПараметрТипОбязательныйОписаниеПо умолчанию
ИмяТестовогоМетодаСтрокаИмя экспортного метода
ПредставлениеТестаСтрокаОтображаемое имя""
ТегиСтрокойСтрокаТеги через запятую""

Примеры:

// Простой серверный тест
ЮТТесты
    .ДобавитьСерверныйТест("ПроведениеДокумента");

// С параметрами
ЮТТесты
    .ДобавитьСерверныйТест("ПроведениеДокумента", "Проведение ПКО", "ПКО, Проведение")
    .СПараметрами("ПКО");

// С обработчиком
ЮТТесты
    .ДобавитьСерверныйТест("ПроведениеДокумента")
    .После("ОчисткаСервера");

Параметризированные тесты

СПараметрами

Позволяет зарегистрировать тест с параметрами (до 10 параметров).

ЮТТесты.ДобавитьТест("Имя").СПараметрами(1, 2)
ПараметрТипОписание
Параметр1..Параметр10Произвольный. Должен быть сериализуемымПараметры, с которыми будет вызван тест

Примеры:

// Один параметр
ЮТТесты
    .ДобавитьТест("ПроверкаПараметра")
    .СПараметрами(10);

// Несколько параметров
ЮТТесты
    .ДобавитьТест("ПроверкаПараметров")
    .СПараметрами(10, "abc", Истина);

// Несколько тестов
ЮТТесты
    .ДобавитьТест("ПроверкаПараметров")
    .СПараметрами(10, "abc", Истина)
    .СПараметрами(10, "abc", Ложь);
подсказка

Для каждого набора параметров можно установить свои настройки.

ЮТТесты
    .ДобавитьТест("ОткрытиеФормы")
        // Настройки для всех вариантов теста
        .Тег("Номенклатура")
        .УдалениеТестовыхДанных(Истина)
    .СПараметрами("Справочник.Номенклатура", "ФормаОбъекта")
        // Настройки для формы объекта
        .Представление("Номенклатура. Проверка открытия формы элемента")
        .Тег("ФормаОбъекта")
    .СПараметрами("Справочник.Номенклатура", "ФормаГруппы")
        // Настройки для формы группы
        .Представление("Номенклатура. Проверка открытия формы группы")
        .Тег("ФормаГруппы")
    .СПараметрами("Справочник.Номенклатура", "ФормаСписка")
        // Настройки для формы списка
        .Представление("Номенклатура. Проверка открытия формы списка")
        .Тег("ФормаСписка")
        .УдалениеТестовыхДанных(Ложь)
;

Тоже самое относится и к методам ниже

СПараметрамиНаКлиенте

Позволяет зарегистрировать тест с параметрами, исполняемый на клиенте.

ЮТТесты.ДобавитьТест("Имя").СПараметрамиНаКлиенте("a", "b")
ПараметрТипОписание
Параметр1..Параметр10Произвольный. Должен быть сериализуемымПараметры, с которыми будет вызван тест

Примеры:

// Один параметр
ЮТТесты
    .ДобавитьТест("ПроверкаФормы")
    .СПараметрамиНаКлиенте("Параметр1");

// Несколько параметров
ЮТТесты
    .ДобавитьТест("ПроверкаФормы")
    .СПараметрамиНаКлиенте("Параметр1", 123, Истина);

// Регистрация в разных контекстах
ЮТТесты
    .ДобавитьТест("ПроверкаПараметров")
    .СПараметрамиНаКлиенте("Параметр1", 123, Истина)
    .СПараметрамиНаСервере("Параметр1", 123, Ложь)
;

СПараметрамиНаСервере

Позволяет зарегистрировать тест с параметрами, исполняемый на сервере.

ЮТТесты.ДобавитьТест("Имя").СПараметрамиНаСервере("x", "y")
ПараметрТипОписание
Параметр1..Параметр10Произвольный. Должен быть сериализуемымПараметры, с которыми будет вызван тест

Примеры:

// Один параметр
ЮТТесты
    .ДобавитьТест("ПроведениеДокумента")
    .СПараметрамиНаСервере("Документ1");

// Несколько параметров
ЮТТесты
    .ДобавитьТест("ПроведениеДокумента")
    .СПараметрамиНаСервере("Документ1", 2024, Ложь);

// Регистрация в разных контекстах
ЮТТесты
    .ДобавитьТест("ПроверкаПараметров")
    .СПараметрамиНаКлиенте("Параметр1", 123, Истина)
    .СПараметрамиНаСервере("Параметр1", 123, Ложь)
;

Методы настройки тестов

Тег

Добавляет тег к тесту, набору или модулю.

ЮТТесты.Тег("Критичный")
ПараметрТипОбязательныйОписание
ИмяТегаСтрокаИмя тега

Примеры:

// Добавить тег к модулю (всем тестам модуля)
ЮТТесты
    .Тег("Критичный")
    .ДобавитьТест("ПроверкаОшибки");

// Добавить несколько тегов к набору
ЮТТесты
    .ДобавитьТестовыйНабор("Проведение")
        .Тег("Документы")
        .Тег("Критичный");

ВТранзакции

Указывает, что тест должен выполняться в транзакции. Применяется только если доступно использование транзакции (Сервер, Толстый клиент (управляемое приложение), Толстый клиент (обычное приложение)).

ЮТТесты.ВТранзакции(Истина)
ПараметрТипОбязательныйОписаниеПо умолчанию
ВТранзакцииБулевоВыполнять тест в транзакцииИстина

Примеры:

// Тест в транзакции
ЮТТесты
    .ДобавитьТест("Сложение")
    .ВТранзакции();

// Все тесты в транзакции по умолчанию
ЮТТесты
    .ВТранзакции()
    .ДобавитьТест("Сложение")
    .ДобавитьТест("Вычитание")
    .ДобавитьТест("Деление").ВТранзакции(Ложь) // А этот тест без транзакции
;

// Явно отключить транзакцию
ЮТТесты
    .ДобавитьТест("Сложение")
    .ВТранзакции(Ложь);

УдалениеТестовыхДанных

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

ЮТТесты.УдалениеТестовыхДанных(Истина)
ПараметрТипОбязательныйОписаниеПо умолчанию
УдалятьТестовыеДанныеБулевоВключить автоматическое удаление данныхИстина

Примеры:

// Включить удаление
ЮТТесты
    .ДобавитьТест("СозданиеДокумента")
    .УдалениеТестовыхДанных();

// Отключить удаление
ЮТТесты
    .ДобавитьТест("СозданиеДокумента")
    .УдалениеТестовыхДанных(Ложь);

// Для всех тестов модуля
ЮТТесты
    .УдалениеТестовыхДанных()
    .ДобавитьТест("СозданиеДокумента");

Перед

Указывает обработчик, который будет выполнен перед тестом, набором или всем тестами/наборами модуля.

ЮТТесты.Перед("Подготовка")
ПараметрТипОбязательныйОписание
ИмяМетодаСтрокаИмя метода-обработчика, выполняемого до

Примеры:

// Перед тестом
ЮТТесты
    .ДобавитьТест("Проверка")
    .Перед("Подготовка");

// Перед набором
ЮТТесты
    .ДобавитьТестовыйНабор("Проведение")
    .Перед("ПодготовкаНабора");

// Перед всеми тестами (наборами) модуля
ЮТТесты
    .Перед("ПодготовкаДанных")
    .ДобавитьТестовыйНабор("Проведение")
        .ДобавитьТест("Проверка")
        .ДобавитьТест("Проведение");

После

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

ЮТТесты.После("Очистка")
ПараметрТипОбязательныйОписание
ИмяМетодаСтрокаИмя метода-обработчика, выполняемого после

Примеры:

// После теста
ЮТТесты
    .ДобавитьТест("Проверка")
    .После("Очистка");

// После набора
ЮТТесты
    .ДобавитьТестовыйНабор("Проведение")
    .После("ОчисткаНабора");

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

Представление

Устанавливает отображаемое имя теста или набора.

ЮТТесты.Представление("Проверка создания", Истина)
ПараметрТипОбязательныйОписаниеПо умолчанию
ИмяСтрокаОтображаемое имя
ИспользуяИмяБулевоНеобходимо ли использовать имя объекта (теста/набора) при формировании представления.Ложь

Примеры:

// Для теста
ЮТТесты
    .ДобавитьТест("Проверка")
    .Представление("Проверка создания") // Представление: "Проверка создания"
    .ДобавитьТест("Проведение")
    .Представление("Проверка документа ПКО", Истина) // Представление: "Проведение. Проверка документа ПКО"
;

// Для набора
ЮТТесты
    .ДобавитьТестовыйНабор("Проведение")
    .Представление("Проведение документов");

ЗависитОт

Позволяет указать зависимости тестов (например, файлы, фабрики XDTO и т.д.).

ЮТТесты.ЗависитОт().ФайлыПроекта("fixtures/data.json").ФабрикаXDTO("fixtures/schemas")

Примеры:

// Зависимость от файла
ЮТТесты
    .ДобавитьТест("Проверка")
    .ЗависитОт().ФайлыПроекта("fixtures/data.json");

// Зависимость от фабрики XDTO
ЮТТесты
    .ДобавитьТест("Проверка")
    .ЗависитОт().ФабрикаXDTO("fixtures/schemas");

// Несколько зависимостей
ЮТТесты
    .ДобавитьТест("Проверка")
    .ЗависитОт().ФайлыПроекта("fixtures/data.json")
    .ЗависитОт().ФабрикаXDTO("fixtures/schemas")
    .ДобавитьТест("ДругаяПроверка");

СвойствоОтчета

Устанавливает свойство отчёта для теста, набора или модуля.
Свойства выводятся в junit (properties) и allure (label).

ЮТТесты.СвойствоОтчета("Автор", "Иванов")
ПараметрТипОбязательныйОписание
ИмяСвойстваСтрокаИмя свойства
ЗначениеЛюбойЗначение свойства

Примеры:

// Одно свойство
ЮТТесты
    .ДобавитьТест("Проверка")
    .СвойствоОтчета("Автор", "Иванов");

// Несколько свойств через цепочку
ЮТТесты
    .ДобавитьТест("Проверка")
    .СвойствоОтчета("Автор", "Иванов")
    .СвойствоОтчета("Версия", "1.0");

СвойстваОтчета

Устанавливает структуру свойств отчёта для теста, набора или модуля.
Свойства выводятся в junit (properties) и allure (label).

ЮТТесты.СвойстваОтчета(Новый Структура("Автор,Версия", "Иванов,1.0"))
ПараметрТипОбязательныйОписание
СвойстваСтруктураСтруктура свойств

Примеры:

// Структура свойств
ЮТТесты
    .ДобавитьТест("Проверка")
    .СвойстваОтчета(Новый Структура("Автор, Версия", "Иванов", "1.0"));

Настроить

Позволяет выполнить произвольную настройку текущего объекта.

ЮТТесты.Настроить(НастроитьТест())
ПараметрТипОбязательныйОписание
ФункцияНастройкиФункцияФункция настройки

Примеры:

// Использование функции настройки
ЮТТесты
    .ДобавитьТест("Проверка")
        .Настроить(НастроитьТест())
    .ДобавитьТест("ДругаяПроверка")
        .Настроить(ЮТАлюр
            .Идентификатор("TST-123")
            .Серьезность("critical")
            .Владелец("Иванов"));
;

Интеграция с Allure (ЮТАлюр)

Для расширенного описания тестов поддерживаются методы модуля ЮТАлюр:

  • Идентификатор, Описание, ОписаниеHTML, Серьезность, Владелец, Эпик, Функциональность, История, РодительскийНабор, Набор, ПодчиненныйНабор, Свойство, Пакет, TestCaseId, Description, DescriptionHtml, Severity, Epic, Feature, Story, ParentSuite, Suite, SubSuite, Package, Owner, Label и др.

Подробнее о, установке параметров Allure можно почитать в отдельной статье

Пример:

ЮТТесты
    .Настроить(ЮТАлюр
        .Epic("Unit tests")
        .Suite("Проверка формирования отчета Allure")
        .Feature("Проверка формирования отчета Allure")
        .Пакет("ФормированиеОтчета.Allure")
        .Owner("alkoleft")
        .Свойство("Проверяемый объект", "ЮТОтчетAllureСлужебный"))
    .ДобавитьТест("ПараметрыГенерацииОтчета")
        .Настроить(ЮТАлюр.Описание("Проверка генерации отчета Allure. Шаги: ...."))
    ;

Примеры из реальных тестовых модулей

Пример 1: Группировка и параметры

ЮТТесты.ДобавитьТестовыйНабор("ИменаЛюдей")
    .ДобавитьТест("Имя")
    .ДобавитьТест("Фамилия")
    .ДобавитьТест("Отчество");

ЮТТесты
    .ДобавитьСерверныйТест("ОписаниеОбъектаМетаданных")
    .СПараметрами(Истина)
    .ДобавитьКлиентскийТест("ОписаниеОбъектаМетаданных")
    .СПараметрами(Ложь)

Пример 2: Использование тегов и обработчиков

ЮТТесты.Тег("Тестовые данные")
    .ДобавитьТест("Конструктор")
    .ДобавитьТест("УстановитьТело");

ЮТТесты
    .ДобавитьТестовыйНабор("Локализации")
        .ДобавитьТест("УстановкаЛокализации")
        .После("СброситьЛокализацию");

Пример 3: Параметризованные тесты

ЮТТесты
    .ДобавитьТест("ЭтоСистемноеПеречисление")
        .СПараметрами(Тип("ВидДвиженияБухгалтерии"), Истина)
        .СПараметрами(Тип("Дата"), Ложь);

Ссылки