Подтвердить что ты не робот

Выходы

Мне нравится, когда тестовые тесты на терминале/консоли фактически показывают их вывод в красном или зеленом тексте. Кажется, что многие библиотеки тестирования, доступные для Go, имеют это. Тем не менее, я хотел бы просто использовать пакет тестирования по умолчанию, который поставляется с Go. Есть ли способ раскрасить его на красный и зеленый?

4b9b3361

Ответ 1

Вы можете создать оболочку оболочки script для этого и покрасить ее с помощью последовательности выделения цвета. Вот простой пример в Linux (я не уверен, как это будет выглядеть на окнах, но я думаю, что есть способ..:))

go test -v . | sed ''/PASS/s//$(printf "\033[32mPASS\033[0m")/'' | sed ''/FAIL/s//$(printf "\033[31mFAIL\033[0m")/''

Ответ 2

Вы можете использовать grc, общий колоризатор, чтобы разгладить что-либо.

В Debian/Ubuntu установите с помощью apt-get install grc. На Mac с помощью brew install grc.

Создайте каталог конфигурации в своем домашнем каталоге:

mkdir ~/.grc

Затем создайте свою персональную конфигурацию grc в ~/.grc/grc.conf:

# Go
\bgo.* test\b
conf.gotest

Затем создайте конфигурацию цветовой конфигурации Go в ~/.grc/conf.gotest, например:

regexp==== RUN .*
colour=blue
-
regexp=--- PASS: .*
colour=green
-
regexp=^PASS$
colour=green
-
regexp=^(ok|\?) .*
colour=magenta
-
regexp=--- FAIL: .*
colour=red
-
regexp=[^\s]+\.go(:\d+)?
colour=cyan

Теперь вы можете запускать тесты Go с помощью:

grc go test -v ./..

Пример вывода:

screenshot

Чтобы не набирать grc все время, добавьте псевдоним в свою оболочку (если используете Bash, либо ~/.bashrc или ~/.bash_profile, либо оба в зависимости от вашей ОС):

alias go=grc go

Теперь вы получаете колоризацию, просто выполнив:

go test -v ./..

Ответ 3

Также есть инструмент под названием richgo, который делает именно это, удобным для пользователя способом.

введите описание изображения здесь

Ответ 4

Вам все равно понадобится библиотека для добавления цветового кода, например:

Оттуда вы указываете, что хотите цвет (StdOut или StdErr, например в этом примере)

Ответ 5

BoltDB имеет несколько методов тестирования, которые выглядят следующим образом:

func assert(tb testing.TB, condition bool, msg string, v ...interface{}) {
    if !condition {
        _, file, line, _ := runtime.Caller(1)
        fmt.Printf("\033[31m%s:%d: "+msg+"\033[39m\n\n", append([]interface{}{filepath.Base(file), line}, v...)...)
        tb.FailNow()
    }
}

Вот остальные. Я добавил зеленые точки здесь.