РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
951 of 1593 menu

Метод testing.T.Setenv

Метод Setenv объекта testing.T устанавливает значение переменной окружения для текущего теста. В первый параметр передается имя переменной, во второй - новое значение. После завершения теста исходное значение переменной автоматически восстанавливается.

Метод гарантирует, что изменение переменной окружения не повлияет на другие тесты, выполняющиеся параллельно. Если переменная уже была установлена, ее значение будет сохранено и восстановлено после завершения теста.

Синтаксис

t.Setenv(key, value)

где key - имя переменной окружения (строка), value - новое значение (строка).

Пример

Давайте установим переменную окружения в тесте и проверим ее значение:

package main import ( "fmt" "os" "testing" ) func TestSetenv(t *testing.T) { t.Setenv("TEST_VAR", "test_value") value := os.Getenv("TEST_VAR") fmt.Println(value) }

Результат выполнения кода:

"test_value"

Пример

Метод Setenv автоматически восстанавливает исходное значение переменной после завершения теста. Рассмотрим это на примере:

package main import ( "fmt" "os" "testing" ) func TestSetenvRestore(t *testing.T) { original := os.Getenv("TEST_VAR") fmt.Printf("before: %s", original) t.Setenv("TEST_VAR", "new_value") fmt.Printf(" during: %s", os.Getenv("TEST_VAR")) t.Cleanup(func() { restored := os.Getenv("TEST_VAR") fmt.Printf(" after: %s", restored) }) }

Результат выполнения кода:

"before: during: new_value after: "

В этом примере видно, что после завершения теста переменная восстанавливается до исходного значения (в примере исходное значение было пустой строкой).

Пример

Метод Setenv безопасно работает с параллельными тестами. Установка переменной в одном тесте не влияет на другие тесты:

package main import ( "fmt" "os" "testing" ) func TestParallelSetenv(t *testing.T) { t.Parallel() t.Setenv("PARALLEL_VAR", "parallel_value") value := os.Getenv("PARALLEL_VAR") fmt.Printf("test parallel: %s", value) } func TestAnotherParallel(t *testing.T) { t.Parallel() value := os.Getenv("PARALLEL_VAR") fmt.Printf("another test: %s", value) }

Результат выполнения кода:

"test parallel: parallel_valueanother test: "

Как видно из примера, параллельный тест не видит переменную, установленную в другом тесте, что обеспечивает изоляцию тестов друг от друга.

Смотрите также

  • метод testing.T.TempDir,
    который создает временную директорию для теста с автоматической очисткой
  • метод testing.T.Cleanup,
    который регистрирует функции для выполнения после завершения теста
  • метод testing.T.Parallel,
    который указывает, что тест может выполняться параллельно с другими тестами
  • метод testing.T.Run,
    который запускает подтест с собственным контекстом
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить