Метод testing.T.TempDir
Метод testing.T.TempDir создает временную директорию
в файловой системе, которая будет автоматически удалена
по завершению теста. Этот метод полезен для тестов,
которым требуется создавать временные файлы или директории.
Первый вызов метода создает новую пустую директорию,
повторные вызовы создают дополнительные директории.
Все созданные директории удаляются в конце теста.
Синтаксис
func (t *T) TempDir() string
Метод не принимает параметров и возвращает строку с абсолютным путем к созданной временной директории.
Пример 1
Давайте создадим временную директорию и проверим, что она существует:
package main
import (
"fmt"
"os"
"testing"
)
func TestTempDir(t *testing.T) {
dir := t.TempDir()
fmt.Println("Directory:", dir)
if _, err := os.Stat(dir); err != nil {
t.Errorf("Directory does not exist: %v", err)
} else {
fmt.Println("Directory exists")
}
}
Результат выполнения кода:
"Directory: /tmp/TestTempDir123456789/001"
"Directory exists"
Пример 2
Давайте создадим временный файл внутри временной директории:
package main
import (
"fmt"
"os"
"path/filepath"
"testing"
)
func TestTempFile(t *testing.T) {
dir := t.TempDir()
filePath := filepath.Join(dir, "testfile.txt")
err := os.WriteFile(filePath, []byte("test data"), 0644)
if err != nil {
t.Errorf("Failed to write file: %v", err)
}
data, err := os.ReadFile(filePath)
if err != nil {
t.Errorf("Failed to read file: %v", err)
}
fmt.Printf("File content: %s\n", string(data))
}
Результат выполнения кода:
"File content: test data"
Пример 3
Давайте создадим несколько временных директорий в одном тесте:
package main
import (
"fmt"
"testing"
)
func TestMultipleTempDirs(t *testing.T) {
dir1 := t.TempDir()
dir2 := t.TempDir()
dir3 := t.TempDir()
fmt.Println("Directory 1:", dir1)
fmt.Println("Directory 2:", dir2)
fmt.Println("Directory 3:", dir3)
}
Результат выполнения кода:
"Directory 1: /tmp/TestMultipleTempDirs123456789/001"
"Directory 2: /tmp/TestMultipleTempDirs123456789/002"
"Directory 3: /tmp/TestMultipleTempDirs123456789/003"
Смотрите также
-
метод
testing.T.Setenv,
который устанавливает переменную окружения для теста -
метод
testing.T.Cleanup,
который регистрирует функции очистки после теста -
метод
testing.T.Run,
который запускает вложенные подтесты -
метод
testing.T.Parallel,
который разрешает параллельный запуск тестов