Метод testing.T.Skip
Метод testing.T.Skip используется для пропуска выполнения текущего теста или подтеста. Он принимает один параметр - сообщение с причиной пропуска. При вызове этого метода тест немедленно останавливается, помечается как пропущенный и не считается проваленным или успешным. Это полезно для случаев, когда тест не может быть выполнен из-за отсутствия необходимых условий, зависимостей или если функциональность временно недоступна.
Синтаксис
func (t *testing.T) Skip(args ...any)
Метод принимает аргументы в том же формате, что и fmt.Println. Сообщение о пропуске будет выведено в лог теста.
Пример
Давайте рассмотрим базовый пример использования метода Skip:
package main
import (
"testing"
)
func TestSkipExample(t *testing.T) {
t.Skip("Skipping this test for demonstration")
// Этот код не выполнится
t.Fatal("This line will never be reached")
}
Результат выполнения теста:
"Skipping this test for demonstration"
Тест будет помечен как пропущенный (SKIP), и сообщение будет выведено в лог.
Пример
Рассмотрим условный пропуск теста на основе наличия переменной окружения:
package main
import (
"os"
"testing"
)
func TestIntegrationWithDatabase(t *testing.T) {
if os.Getenv("INTEGRATION_TESTS") == "" {
t.Skip("Skipping integration test: INTEGRATION_TESTS not set")
}
// Выполнение интеграционного теста с базой данных
t.Log("Running integration test with database")
}
Если переменная окружения INTEGRATION_TESTS не установлена, тест будет пропущен с соответствующим сообщением. В противном случае тест выполнится.
Пример
Использование метода Skip внутри подтеста:
package main
import (
"testing"
)
func TestSubtestSkip(t *testing.T) {
t.Run("Subtest A", func(t *testing.T) {
t.Log("Running Subtest A")
})
t.Run("Subtest B", func(t *testing.T) {
if true { // Условный пропуск
t.Skip("Skipping Subtest B")
}
t.Log("This will not be printed")
})
t.Run("Subtest C", func(t *testing.T) {
t.Log("Running Subtest C")
})
}
Результат выполнения теста:
"Running Subtest A"
"Skipping Subtest B"
"Running Subtest C"
Подтест B будет пропущен, тогда как подтесты A и C выполнятся без проблем. Это позволяет гибко управлять выполнением отдельных частей теста.
Смотрите также
-
метод
testing.T.Skipf,
который позволяет форматировать сообщение пропуска -
метод
testing.T.SkipNow,
который пропускает тест без вывода сообщения -
метод
testing.T.Skipped,
который проверяет, был ли тест пропущен -
метод
testing.F.Skip,
который пропускает fuzz-тест с указанием причины