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

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

Введение

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

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

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: Параметризованные тесты

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

Ссылки