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

Метод testing.T.Log

Метод T.Log записывает произвольное текстовое сообщение в лог теста. Этот метод особенно полезен для отладки — он позволяет сохранять промежуточную информацию о ходе выполнения теста, которая будет видна только в случае его падения или при подробном выводе (с флагом -v). Первый и единственный параметр метода — это сообщение типа any (обычно передают строку), которое необходимо записать в лог.

Синтаксис

t.Log(args ...any)

Метод принимает произвольное количество аргументов любого типа, аналогично fmt.Println. Аргументы объединяются в одну строку с пробелами между ними.

Пример

Рассмотрим простой тест, который проверяет вычисление суммы двух чисел. Внутри теста добавим несколько логов для отслеживания процесса:

package main import ( "fmt" "testing" ) func TestSum(t *testing.T) { a := 5 b := 3 expected := 8 t.Log("Starting test with values:", a, b) result := a + b t.Log("Computed sum:", result) if result != expected { t.Errorf("Sum is incorrect: got %d, want %d", result, expected) } t.Log("Test completed successfully") }

Результат выполнения теста с флагом -v:

"=== RUN TestSum" " sum_test.go:11: Starting test with values: 5 3" " sum_test.go:14: Computed sum: 8" " sum_test.go:20: Test completed successfully" "--- PASS: TestSum (0.00s)" "PASS"

Обратите внимание: логи выводятся только при использовании флага -v. Если запустить тест без него, сообщения не будут отображаться в консоли.

Пример

Продемонстрируем, как логи сохраняются при падении теста даже без флага -v. Создадим тест, который всегда падает:

package main import ( "testing" ) func TestFailWithLogs(t *testing.T) { t.Log("This message will be shown because test fails") t.Logf("Current value: %d", 42) t.Error("Test failed intentionally") t.Log("This message will NOT be shown") }

Результат выполнения теста без флага -v:

"--- FAIL: TestFailWithLogs (0.00s)" " fail_test.go:8: This message will be shown because test fails" " fail_test.go:9: Current value: 42" " fail_test.go:10: Test failed intentionally" "FAIL"

Как видно, все сообщения, записанные до вызова Error, были выведены в лог, несмотря на отсутствие флага -v. Сообщение после Error не выводится, так как выполнение теста прерывается.

Пример

Метод T.Log также поддерживает форматирование с использованием аналогии с fmt.Print. Для форматированного вывода удобнее использовать метод T.Logf, но в данном примере покажем простой вывод нескольких значений в одном сообщении:

package main import ( "fmt" "testing" ) func TestMultipleLogArgs(t *testing.T) { name := "Alice" age := 30 height := 1.75 t.Log("User info:", "Name:", name, "Age:", age, "Height:", height) t.Log("String representation:", fmt.Sprintf("%s is %d years old", name, age)) if age < 18 { t.Error("User is underage") } }

Результат выполнения теста с падением (или с флагом -v):

"=== RUN TestMultipleLogArgs" " info_test.go:11: User info: Name: Alice Age: 30 Height: 1.75" " info_test.go:12: String representation: Alice is 30 years old" "--- PASS: TestMultipleLogArgs (0.00s)" "PASS"

Метод автоматически разделяет аргументы пробелами, что делает его удобным для быстрого логирования без лишнего форматирования.

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

  • метод T.Logf,
    который позволяет логировать сообщения с форматированием
  • метод T.Error,
    который логирует сообщение об ошибке и продолжает выполнение теста
  • метод T.Fatal,
    который логирует сообщение и немедленно прерывает выполнение теста
  • метод T.Helper,
    который позволяет маркировать функцию как вспомогательную для более точного вывода ошибок
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить