mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-03-17 20:48:01 +02:00
Описание
This commit is contained in:
parent
059258c2d3
commit
f8fe7e0d66
96
documentation/docs/user-api/test-data/test-data-deletion.md
Normal file
96
documentation/docs/user-api/test-data/test-data-deletion.md
Normal file
@ -0,0 +1,96 @@
|
||||
---
|
||||
tags: [Getting started, Test data]
|
||||
---
|
||||
|
||||
# Удаление тестовых данных
|
||||
|
||||
При использовании тестовых данных нередко необходимо удалять созданные объекты.
|
||||
|
||||
Для этого вы можете использовать
|
||||
|
||||
## Автоматические транзакции
|
||||
|
||||
Для включения нужно при регистрации теста вызвать метод `ВТранзакции()`
|
||||
|
||||
```bsl title=ВТранзакции.bsl
|
||||
ЮТТесты
|
||||
.ДобавитьТест("Фикция").ВТранзакции() // Использование транзакции для конкретного теста
|
||||
|
||||
ЮТТесты
|
||||
.ДобавитьТестовыйНабор("Основной).ВТранзакции() // Использование транзакции для набора тестов
|
||||
.ДобавитьТест("Фикция")
|
||||
|
||||
ЮТТесты.ВТранзакции() // Использование транзакции для тестов модуля
|
||||
.ДобавитьТест("Фикция")
|
||||
|
||||
```
|
||||
|
||||
И тогда тестовый движок будет оборачивать в транзакцию каждый серверный тест (для клиентских будет игнорироваться)
|
||||
|
||||
:::caution Учитывайте
|
||||
В транзакцию оборачивается тест, а не модуль или набор, поэтому данные созданные вне теста не будут удалены.
|
||||
Такие данные необходимо удалять самостоятельно при необходимости.
|
||||
:::
|
||||
|
||||
## Механизма удаления тестовых данных
|
||||
|
||||
Для включения нужно при регистрации теста вызвать метод `УдалениеТестовыхДанных()`
|
||||
|
||||
```bsl title=УдалениеТестовыхДанных.bsl
|
||||
ЮТТесты
|
||||
.ДобавитьТест("Фикция").УдалениеТестовыхДанных() // Использование для конкретного теста
|
||||
|
||||
ЮТТесты
|
||||
.ДобавитьТестовыйНабор("Основной).УдалениеТестовыхДанных() // Использование для всех тестов набора
|
||||
.ДобавитьТест("Фикция")
|
||||
|
||||
ЮТТесты.УдалениеТестовыхДанных() // Использование для всех тестов модуля
|
||||
.ДобавитьТест("Фикция")
|
||||
|
||||
ЮТТесты.ВТранзакции().УдалениеТестовыхДанных() // Совместно с транзакцией
|
||||
.ДобавитьТест("Фикция")
|
||||
|
||||
```
|
||||
|
||||
Механизм не используется транзакции, а запоминает в контексте все созданные с помощью API объекты и записи регистров сведений.
|
||||
Позволяет:
|
||||
|
||||
* Удалять данные созданные с клиента
|
||||
* Удалять данные созданные вне теста (в обработчиках событий)
|
||||
|
||||
:::tip
|
||||
Механизм понимает в рамках какого контекста исполнения (тест, набор, модуль) были созданы данные и удаляет их по выходу из него.
|
||||
:::
|
||||
|
||||
Рассмотрим время жизни объектов созданных на разных этапах тестирования, например имеем такой модуль.
|
||||
|
||||
```bsl title=УдалениеТестовыхДанныхВремяЖизни.bsl
|
||||
Процедура ПередВсемиТестами() Экспорт
|
||||
ДанныеМодуля = ЮТест.Данные().СоздатьЭлемент(); // Не будет удалена
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПередТестовымНабором() Экспорт
|
||||
ДанныеНабора = ЮТест.Данные().СоздатьЭлемент();
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеВсехТестов() Экспорт
|
||||
ДанныеТеста = ЮТест.Данные().СоздатьЭлемент();
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Тест() Экспорт
|
||||
Ссылка = ЮТест.Данные().СоздатьЭлемент();
|
||||
КонецПроцедуры
|
||||
```
|
||||
|
||||
Для переменных получим разное время жизни
|
||||
|
||||
* `ДанныеМодуля` - Не будет удалена, проблема будет решена в ближайшем будущем.
|
||||
* `ДанныеНабора` - Живет, пока исполняются тесты набора.
|
||||
* `ДанныеТеста` и `Ссылка`- Живут, пока исполняется тест.
|
||||
|
||||
:::caution Механизм имеет ряд ограничений и не работает для следующих кейсов:
|
||||
|
||||
* Данные создан не через API
|
||||
* Данные созданы в событии "ПередВсемиТестами" (работает для "ПередТестовымНабором")
|
||||
* Данные созданы в клиентском модуле через вызов своего серверного модуля, даже если он использует API тестового движка
|
||||
:::
|
@ -22,12 +22,13 @@ tags: [Getting started, Test data]
|
||||
Если грамотно распределить тестовые данные на способы создания, мы можем добиться оптимального результата.
|
||||
Например, можно статичные данные создать вручную, сложные кейсы данных засунуть в макеты, а для программного создания реализовать методы-конструкторы, которые будем переиспользовать. Таким образом, сможем уйти от минусов данного подхода или минимизировать их вред.
|
||||
|
||||
В текущей версии тестовый движок предоставляет api для программного создания тестовых данных. За это отвечает общий модуль `ЮТТестовыеДанные`, к которому можно обратиться через метод `ЮТест.Данные`.
|
||||
В текущей версии тестовый движок предоставляет api для программного создания тестовых данных. За это отвечает общий модуль `ЮТТестовыеДанные`, к которому можно обратиться через метод `ЮТест.Данные()`.
|
||||
|
||||
Сейчас это минимальный набор методов, который в дальнейшем будет развиваться. Он позволяет:
|
||||
|
||||
* Создавать данные информационной базы
|
||||
* Генерировать случайные значения
|
||||
* Автоматически удалять созданные данные (для этого необходимо включить настройку теста `УдалениеТестовыхДанных()`)
|
||||
* Работать с файлами
|
||||
* Использовать таблицы markdown в качестве макетов данных
|
||||
|
Loading…
x
Reference in New Issue
Block a user