--- tags: [Начало, Тестовые данные] --- # Удаление тестовых данных При использовании тестовых данных нередко необходимо удалять созданные объекты. Для этого вы можете использовать ## Автоматические транзакции Для включения нужно при регистрации теста вызвать метод `ВТранзакции()` ```bsl title=ВТранзакции.bsl ЮТТесты .ДобавитьТест("Фикция").ВТранзакции() // Использование транзакции для конкретного теста ЮТТесты .ДобавитьТестовыйНабор("Основной).ВТранзакции() // Использование транзакции для набора тестов .ДобавитьТест("Фикция") ЮТТесты.ВТранзакции() // Использование транзакции для тестов модуля .ДобавитьТест("Фикция") ``` И тогда тестовый движок будет оборачивать в транзакцию каждый серверный тест (для клиентских будет игнорироваться) :::caution Учитывайте В транзакцию оборачивается тест, а не модуль или набор, поэтому данные созданные вне теста не будут удалены. Такие данные необходимо удалять самостоятельно при необходимости. ::: ## Механизм удаления тестовых данных Для включения нужно при регистрации теста вызвать метод `УдалениеТестовыхДанных()` ```bsl title=УдалениеТестовыхДанных.bsl ЮТТесты .ДобавитьТест("Фикция").УдалениеТестовыхДанных() // Использование для конкретного теста ЮТТесты .ДобавитьТестовыйНабор("Основной).УдалениеТестовыхДанных() // Использование для всех тестов набора .ДобавитьТест("Фикция") ЮТТесты.УдалениеТестовыхДанных() // Использование для всех тестов модуля .ДобавитьТест("Фикция") ЮТТесты.ВТранзакции().УдалениеТестовыхДанных() // Совместно с транзакцией .ДобавитьТест("Фикция") ``` Механизм не использует транзакции, а запоминает в контексте все созданные с помощью API объекты и записи регистров сведений. Позволяет: * Удалять данные созданные с клиента * Удалять данные созданные вне теста (в обработчиках событий) :::caution Удаление и только Механизм только удаляет созданные объекты, изменения не откатываются ::: :::tip Разное время жизни данных Механизм понимает в рамках какого контекста исполнения (тест, набор, модуль) были созданы данные и удаляет их по выходу из него. ::: Рассмотрим время жизни объектов созданных на разных этапах тестирования, например имеем такой модуль. ```bsl title=УдалениеТестовыхДанныхВремяЖизни.bsl Процедура ПередВсемиТестами() Экспорт ДанныеМодуля = ЮТест.Данные().СоздатьЭлемент(); КонецПроцедуры Процедура ПередТестовымНабором() Экспорт ДанныеНабора = ЮТест.Данные().СоздатьЭлемент(); КонецПроцедуры Процедура ПослеВсехТестов() Экспорт ДанныеТеста = ЮТест.Данные().СоздатьЭлемент(); КонецПроцедуры Процедура Тест() Экспорт Ссылка = ЮТест.Данные().СоздатьЭлемент(); КонецПроцедуры ``` Для переменных получим разное время жизни * `ДанныеМодуля` - Живет, пока исполняются тесты модуля одного контекста (Сервер, Клиент). * `ДанныеНабора` - Живет, пока исполняются тесты набора. * `ДанныеТеста` и `Ссылка` - Живут, пока исполняется тест. :::caution Механизм имеет ряд ограничений и не работает для следующих кейсов: * Данные создан не через API * Данные созданы в клиентском модуле через вызов своего серверного модуля, даже если он использует API тестового движка :::