---
tags: [Начало, Контекст]
---

# Контекст

## Механизм контекстов

Одним из важнейших блоков работы тестового движка является механизм контекстов.

Он позволяет:

1. Хранить промежуточные данные и обеспечивать работу механизма текучих выражений.
2. Передавать между тестами необходимые данные.
3. Удалять тестовые данные.

И имеет несколько ограничений:

1. Не синхронизируется между клиентом и сервером.
2. Тестовые контексты имеют ограниченное время жизни. Например, контекст теста "живет" только в рамках теста и событиях "ПередКаждымТестом", "ПослеКаждогоТеста".

Для различных механизмов движка существуют различные контексты, такие как контекст утверждений, контекст теста и тд.

## Контексты тестового модуля

Разработчику тестов будут интересны следующие контексты:

* Контекст теста (`ЮТест.КонтекстТеста`) - живет в рамках одного теста. Доступен в каждом тесте и в обработчиках событий 
  * `ПередКаждымТестом`
  * `ПослеКаждогоТеста`
* Контекст тестового набора (`ЮТест.КонтекстТестовогоНабора`) - живет в рамках набора тестов. Доступен в каждом тесте набора и в обработчиках событий
  * `ПередТестовымНабором`
  * `ПослеТестовогоНабора`
  * `ПередКаждымТестом`
  * `ПослеКаждогоТеста`
* Контекст тестового модуля (`ЮТест.КонтекстМодуля`) - живет в рамках тестового модуля. Доступен в каждом тесте модуля и в обработчиках событий
  * `ПередВсемиТестами`
  * `ПослеВсехТестов`
  * `ПередТестовымНабором`
  * `ПослеТестовогоНабора`
  * `ПередКаждымТестом`
  * `ПослеКаждогоТеста`

На каждом уровне исполнения есть возможность переопределить обработчики событий соответствующего контекста исполнения при помощи методов `Перед()` и `После()`. Настроенный обработчик события будет вызван _вместо_ основного. Пример:
```bsl
ЮТТесты
  .ДобавитьТестовыйНабор("Набор1") // Будет вызван основной обработчик ПередТестовымНабором()
    .ДобавитьТест("Тест1")
  .ДобавитьТестовыйНабор("Набор2").Перед("Перед_Набор2") // Будет вызван обработчик Перед_Набор2()
    .ДобавитьТест("Тест2");

```