Функция testing.Short

Функция testing.Short проверяет, выполняется ли тест в коротком режиме. Она возвращает true, если тесты запущены с флагом -test.short или через переменную среды, и false в противном случае. Эта функция не принимает параметров и возвращает логическое значение.

Синтаксис

gotesting.Short()

Пример

Давайте создадим тест, который пропускает длительные операции при запуске в коротком режиме:

gopackage main

import (
  "testing"
  "time"
)

func TestLongOperation(t *testing.T) {
  if testing.Short() {
    t.Skip("Skipping long test in short mode")
  }

  time.Sleep(5 * time.Second)
  t.Log("Long operation completed")
}

Результат выполнения кода при запуске с флагом -test.short:

go"--- SKIP: TestLongOperation (0.00s)"

Пример

Рассмотрим пример использования с условной логикой для адаптации тестов под разные режимы запуска:

gopackage main

import (
  "testing"
)

func TestDataProcessing(t *testing.T) {
  dataSize := 1000
  if testing.Short() {
    dataSize = 10
    t.Log("Running in short mode with reduced data size")
  }

  result := processData(dataSize)
  if result != dataSize {
    t.Errorf("Expected %d, got %d", dataSize, result)
  }
}

func processData(size int) int {
  return size
}

Результат выполнения кода при запуске без флага -test.short:

go"Running in short mode with reduced data size"

Пример

Покажем, как использовать функцию в комплексных тестовых сценариях с несколькими проверками:

gopackage main

import (
  "testing"
)

func TestComplexSuite(t *testing.T) {
  if testing.Short() {
    t.Log("Running only fast tests")
    runFastTests(t)
  } else {
    t.Log("Running full test suite")
    runFastTests(t)
    runSlowTests(t)
  }
}

func runFastTests(t *testing.T) {
  t.Log("Fast tests completed")
}

func runSlowTests(t *testing.T) {
  t.Log("Slow tests completed")
}

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

go"Running only fast tests"
"Fast tests completed"

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

  • функцию testing.Verbose,
    которая проверяет режим подробного вывода
  • функцию testing.T.Skip,
    которая пропускает текущий тест
  • функцию testing.T.Skipf,
    которая пропускает тест с форматированным сообщением
  • функцию testing.T.Skipped,
    которая проверяет, был ли тест пропущен