2023-02-10 12:14:50 +03:00
---
2023-05-25 13:59:42 +03:00
tags: [Начало, Контекст]
2023-02-10 12:14:50 +03:00
---
2022-10-04 16:39:36 +03:00
# Контекст
2023-07-29 23:45:16 +07:00
## Механизм контекстов
2022-10-04 16:39:36 +03:00
Одним из важнейших блоков работы тестового движка является механизм контекстов.
Он позволяет:
2023-07-29 23:45:16 +07:00
1. Хранить промежуточные данные и обеспечивать работу механизма текучих выражений.
2. Передавать между тестами необходимые данные.
3. Удалять тестовые данные.
2022-10-04 16:39:36 +03:00
И имеет несколько ограничений:
2023-07-29 23:45:16 +07:00
1. Не синхронизируется между клиентом и сервером.
2. Тестовые контексты имеют ограниченное время жизни. Например, контекст теста "живет" только в рамках теста и событиях "ПередКаждымТестом", "ПослеКаждогоТеста".
2022-10-04 16:39:36 +03:00
Для различных механизмов движка существуют различные контексты, такие как контекст утверждений, контекст теста и тд.
2023-07-29 23:45:16 +07:00
## Контексты тестового модуля
2022-10-04 16:39:36 +03:00
Разработчику тестов будут интересны следующие контексты:
2023-07-25 03:44:36 +07:00
* Контекст теста (`ЮТест.КонтекстТеста` ) - живет в рамках одного теста. Доступен в каждом тесте и в обработчиках событий
* `ПередКаждымТестом`
* `ПослеКаждогоТеста`
2022-10-04 16:39:36 +03:00
* Контекст тестового набора (`ЮТест.КонтекстТестовогоНабора` ) - живет в рамках набора тестов. Доступен в каждом тесте набора и в обработчиках событий
* `ПередТестовымНабором`
* `ПослеТестовогоНабора`
* `ПередКаждымТестом`
* `ПослеКаждогоТеста`
* Контекст тестового модуля (`ЮТест.КонтекстМодуля` ) - живет в рамках тестового модуля. Доступен в каждом тесте модуля и в обработчиках событий
* `ПередВсемиТестами`
* `ПослеВсехТестов`
* `ПередТестовымНабором`
* `ПослеТестовогоНабора`
* `ПередКаждымТестом`
* `ПослеКаждогоТеста`
2023-07-25 03:44:36 +07:00
2023-07-29 23:45:16 +07:00
На каждом уровне исполнения есть возможность переопределить обработчики событий соответствующего контекста исполнения при помощи методов `Перед()` и `После()` . Настроенный обработчик события будет вызван _вместо_ основного. Пример:
2023-07-25 03:44:36 +07:00
```bsl
2023-07-29 23:45:16 +07:00
ЮТТесты
.ДобавитьТестовыйНабор("Набор1") // Будет вызван основной обработчик ПередТестовымНабором()
.ДобавитьТест("Тест1")
.ДобавитьТестовыйНабор("Набор2").Перед("Перед_Набор2") // Будет вызван обработчик Перед_Набор2()
.ДобавитьТест("Тест2");
2023-07-25 03:44:36 +07:00
```