Можно сказать, что testify — самая популярная (судя по количеству звезд GitHub) библиотека тестирования языка Go. testify предоставляет множество удобных функций, которые помогут нам утверждать и выводить сообщения об ошибках. Используя стандартную библиотеку для тестирования, нам нужно самим писать различные условные суждения и принимать решение о выводе соответствующей информации на основе результатов суждения.
Ядро свидетельских показаний состоит из трех частей:
Подбиблиотека Assert предоставляет удобные функции утверждения, которые могут значительно упростить написание тестового кода. Подводя итог, нужно будет судить заранее + режим вывода информации:
if got != expected {
t.Errorf("Xxx failed expect:%d got:%d", got, expected)
}
Упрощено до одной строки кода утверждения:
assert.Equal(t, got, expected, "they should be equal")
Структура становится более понятной и читабельной. Разработчики, знакомые с другими средами языкового тестирования, должны быть знакомы с соответствующим использованием утверждения. Кроме того, функция в утверждении автоматически сгенерирует более четкое описание ошибки:
func TestEqual(t *testing.T) {
var a = 100
var b = 200
assert.Equal(t, a, b, "")
}
testify обеспечивает простую поддержку Mock. Макет просто означает создание фиктивного объекта. Макетный объект предоставляет тот же интерфейс, что и исходный объект. Макетный объект используется для замены исходного объекта в тесте. Таким образом мы можем построить исходный объект, что сложно, особенно когда речь идет о внешних ресурсах (база данных, сеть доступа и т. д.). Например, сейчас мы собираемся написать программу, которая извлекает информацию о списке пользователей с сайта. После завершения извлечения программа отображает и анализирует ее. Каждый раз доступ к сети будет приносить большую неопределенность или даже каждый раз возвращать другой список, что чрезвычайно затрудняет тестирование. Мы можем использовать технологию Mock.
testify предоставляет функцию набора тестов (TestSuite). Набор тестов testify представляет собой просто структуру, встроенную в анонимную структуру suite.Suite. Набор тестов может содержать несколько тестов, они могут совместно использовать состояние и определять методы-перехватчики для выполнения операций инициализации и очистки. Перехватчики определяются через интерфейсы. Структура набора тестов, реализующая эти интерфейсы, будет вызывать соответствующий метод при запуске к указанному узлу.
В основном я использую два пакета: пакет Assert и пакет require. Единственная разница между ними заключается в том, что функция require напрямую приводит к завершению кейса, в то время как Assert также помечается как сбой кейса, но кейс не завершится и продолжит свое выполнение. выполнять. Посмотрите пример:
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestCase1(t *testing.T) {
name := "Bob"
age := 10
assert.Equal(t, "bob", name)
assert.Equal(t, 20, age)
}
осуществлять:
$ go test
--- FAIL: TestCase1 (0.00s)
assertions.go:254:
Error Trace: main_test.go:13
Error: Not equal:
expected: "bob"
actual : "Bob"
Test: TestCase1
assertions.go:254:
Error Trace: main_test.go:14
Error: Not equal:
expected: 20
actual : 10
Test: TestCase1
FAIL
exit status 1
FAIL testUT 0.009s
В этом примере мы используем Assert, и вы можете видеть, что выполняются обе инструкции Assert.Equal().
Ссылка: https://www.jb51.net/article/256517.htm. https://www.jianshu.com/p/ad46bbbf877c