Сценарные тесты - это тесты, которые выполняются строго последовательно, начиная от первого шага и завершая последним шагом. Если один из шагов падает, весь сценарий считается упавшим и шаги, следующие за упавшим шагом, не выполняются.
Для реализации подобного поведения шаги/тесты одного сценария объединяем в модуле (модуле обработки или модуле формы) одного файла-обработки тестирования (внешней или встроенной).
-
В одном модуле может быть несколько тестовых сценариев.
-
Тесты всегда будут запускаться в том порядке, который задан при добавлении тестов в методе
ЗаполнитьНаборТестов
-
Для добавления нового сценария нужно использовать метод
НаборТестов.НачатьГруппу(ПредставлениеГруппы, Истина)
-
Для метода начала тестового сценария нужно использовать первый тест из тест.набора, добавляемый после начала группы (через метод
НаборТестов.Добавить(ИмяМетода, Параметры, ПредставлениеМетода = "")
илиНаборТестов.Добавить(ИмяМетода, ПредставлениеМетода = "")
-
Для метода завершения тестового сценария (например, для освобождения ресурсов) нужно использовать метод
ДобавитьДеструктор(ИмяМетода, ПредставлениеМетода = "")
.- обратите внимание, что
- Деструктор будет вызываться в любом случае.
- В случае успеха он вызывается как обычный шаг
- В случае падения на любом из шагов он будет вызван перед завершением работы по сценарию.
- Если падение происходит в коде самого деструктора, второй раз деструктор не вызывается.
- обратите внимание, что
Есть ниже по тексту.
Также можно посмотреть пример сценария для ОФ или пример сценария для УФ
Для сценарных тестов становится возможным использование контекста сценария.
Контекст - это произвольные данные для возможности передачи данных между шагами. Рекомендуем использовать коллекцию данных, например, структуру, в качестве значения контекста, в этом случае удобно передавать различные значения.
Два метода работы с контекстом:
-
Процедура
КонтекстЯдра.СохранитьКонтекст(НовыйКонтекст)
- устанавливает новое значение контекста для сценария
- параметр
НовыйКонтекст
- значение нового контекста. Тип - произвольный.
-
Функция
КонтекстЯдра.ПолучитьКонтекст()
- возвращает значение контекста сценария
Использование методов работы с контекстом запрещено при использовании несценарных тестов.
Перем КонтекстЯдра;
Перем Ожидаем;
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
КонтекстЯдра = КонтекстЯдраПараметр;
Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD");
КонецПроцедуры
Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
НаборТестов.НачатьГруппу("Сценарные тесты с вызовом деструктора группы", Истина);
НаборТестов.Добавить("КонструкторСценария", "Начало сценария");
НаборТестов.Добавить("ТестДолжен_ПроверитьЖурналВыполнения", "Проверяю журнал выполнения шагов");
НаборТестов.ДобавитьДеструктор("ДеструкторСценария", "Обязательное завершение сценария");
КонецПроцедуры
// { Сценарный тест
Процедура КонструкторСценария() Экспорт
ЖурналВыполнения = "КонструкторСценария;";
КонтекстЯдра.СохранитьКонтекст(ЖурналВыполнения);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьЖурналВыполнения() Экспорт
ЖурналВыполнения = КонтекстЯдра.ПолучитьКонтекст();
Ожидаем.Что(ЖурналВыполнения, "ТестДолжен_ПроверитьЖурналВыполнения").Равно("КонструкторСценария;");
ЖурналВыполнения = ЖурналВыполнения + "ПроверитьЖурналВыполнения;";
КонтекстЯдра.СохранитьКонтекст(ЖурналВыполнения);
КонецПроцедуры
Процедура ДеструкторСценария() Экспорт
ЖурналВыполнения = КонтекстЯдра.ПолучитьКонтекст();
Ожидаем.Что(ЖурналВыполнения, "ДеструкторСценария").Равно("КонструкторСценария;ПроверитьЖурналВыполнения;");
ЖурналВыполнения = ЖурналВыполнения + "ДеструкторСценария;";
КонтекстЯдра.СохранитьКонтекст(ЖурналВыполнения);
КонецПроцедуры
// }
Перем КонтекстЯдра;
Перем Ожидаем;
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
КонтекстЯдра = КонтекстЯдраПараметр;
Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD");
КонецПроцедуры
Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
НаборТестов.НачатьГруппу("Тестовый сценарий с параметризированными тестами", Истина);
НаборТестов.Добавить("ТестДолжен_СохранитьРезультатСложенияВКонтекст", НаборТестов.ПараметрыТеста(5, 7), "Тест должен сохранить результат сложения (5 + 7) в контекст");
Тест = НаборТестов.Добавить("ТестДолжен_СравнитьКонтекстСоСвоимПараметром");
Тест.Параметры.Добавить(12);
НаборТестов.ДобавитьДеструктор("ДеструкторСценария", "Обязательное завершение сценария");
КонецПроцедуры
// { Тестовый сценарий с параметризированными тестами
Процедура ТестДолжен_СохранитьРезультатСложенияВКонтекст(Знач1, Знач2) Экспорт
КонтекстЯдра.СохранитьКонтекст(Знач1 + Знач2);
КонецПроцедуры
Процедура ТестДолжен_СравнитьКонтекстСоСвоимПараметром(Результат) Экспорт
Контекст = КонтекстЯдра.ПолучитьКонтекст();
Ожидаем.Что(Контекст).Равно(Результат);
КонецПроцедуры
Процедура ДеструкторСценария() Экспорт
//Что-то делаем
КонецПроцедуры
// }