Documentation
ΒΆ
Overview ΒΆ
Package testza is a full-featured testing framework for Go. It integrates with the default test runner, so you can use it with the standard `go test` tool. Testza contains easy to use methods, like assertions, output capturing, mocking, and much more.
Index ΒΆ
- func AssertCompletesIn(t testRunner, duration time.Duration, f func(), msg ...any)
- func AssertContains(t testRunner, object, element any, msg ...any)
- func AssertDecreasing(t testRunner, object any, msg ...any)
- func AssertDirEmpty(t testRunner, dir string, msg ...any)
- func AssertDirExists(t testRunner, dir string, msg ...any)
- func AssertDirNotEmpty(t testRunner, dir string, msg ...any)
- func AssertEqual(t testRunner, expected any, actual any, msg ...any)
- func AssertEqualValues(t testRunner, expected any, actual any, msg ...any)
- func AssertErrorIs(t testRunner, err, target error, msg ...any)
- func AssertFalse(t testRunner, value any, msg ...any)
- func AssertFileExists(t testRunner, file string, msg ...any)
- func AssertGreater(t testRunner, object1, object2 any, msg ...any)
- func AssertGreaterOrEqual(t testRunner, object1, object2 interface{}, msg ...interface{})
- func AssertImplements(t testRunner, interfaceObject, object any, msg ...any)
- func AssertInRange[T number](t testRunner, value T, min T, max T, msg ...any)
- func AssertIncreasing(t testRunner, object any, msg ...any)
- func AssertKindOf(t testRunner, expectedKind reflect.Kind, object any, msg ...any)
- func AssertLen(t testRunner, object any, length int, msg ...any)
- func AssertLess(t testRunner, object1, object2 any, msg ...any)
- func AssertLessOrEqual(t testRunner, object1, object2 interface{}, msg ...interface{})
- func AssertNil(t testRunner, object any, msg ...any)
- func AssertNoDirExists(t testRunner, dir string, msg ...any)
- func AssertNoError(t testRunner, err error, msg ...any)
- func AssertNoFileExists(t testRunner, file string, msg ...any)
- func AssertNoSubset(t testRunner, list any, subset any, msg ...any)
- func AssertNotCompletesIn(t testRunner, duration time.Duration, f func(), msg ...any)
- func AssertNotContains(t testRunner, object, element any, msg ...any)
- func AssertNotEqual(t testRunner, expected any, actual any, msg ...any)
- func AssertNotEqualValues(t testRunner, expected any, actual any, msg ...any)
- func AssertNotErrorIs(t testRunner, err, target error, msg ...any)
- func AssertNotImplements(t testRunner, interfaceObject, object any, msg ...any)
- func AssertNotInRange[T number](t testRunner, value T, min T, max T, msg ...any)
- func AssertNotKindOf(t testRunner, kind reflect.Kind, object any, msg ...any)
- func AssertNotNil(t testRunner, object any, msg ...any)
- func AssertNotNumeric(t testRunner, object any, msg ...any)
- func AssertNotPanics(t testRunner, f func(), msg ...any)
- func AssertNotRegexp(t testRunner, regex any, txt any, msg ...any)
- func AssertNotSameElements(t testRunner, expected any, actual any, msg ...any)
- func AssertNotUnique[elementType comparable](t testRunner, list []elementType, msg ...any)
- func AssertNotZero(t testRunner, value any, msg ...any)
- func AssertNumeric(t testRunner, object any, msg ...any)
- func AssertPanics(t testRunner, f func(), msg ...any)
- func AssertRegexp(t testRunner, regex any, txt any, msg ...any)
- func AssertSameElements(t testRunner, expected any, actual any, msg ...any)
- func AssertSubset(t testRunner, list any, subset any, msg ...any)
- func AssertTestFails(t testRunner, test func(t TestingPackageWithFailFunctions), msg ...any)
- func AssertTrue(t testRunner, value any, msg ...any)
- func AssertUnique[elementType comparable](t testRunner, list []elementType, msg ...any)
- func AssertZero(t testRunner, value any, msg ...any)
- func CaptureStderr(capture func(w io.Writer) error) (string, error)
- func CaptureStdout(capture func(w io.Writer) error) (string, error)
- func CaptureStdoutAndStderr(capture func(stdoutWriter, stderrWriter io.Writer) error) (stdout, stderr string, err error)
- func FuzzBoolFull() []bool
- func FuzzFloat64Full() (floats []float64)
- func FuzzFloat64GenerateRandomNegative(count int, min float64) (floats []float64)
- func FuzzFloat64GenerateRandomPositive(count int, max float64) (floats []float64)
- func FuzzFloat64GenerateRandomRange(count int, min, max float64) (floats []float64)
- func FuzzIntFull() (ints []int)
- func FuzzIntGenerateRandomNegative(count, min int) (ints []int)
- func FuzzIntGenerateRandomPositive(count, max int) (ints []int)
- func FuzzIntGenerateRandomRange(count, min, max int) (ints []int)
- func FuzzStringEmailAddresses() []string
- func FuzzStringEmpty() []string
- func FuzzStringFull() (ret []string)
- func FuzzStringGenerateRandom(count, length int) (result []string)
- func FuzzStringHtmlTags() []string
- func FuzzStringLong() (testSet []string)
- func FuzzStringNumeric() []string
- func FuzzStringUsernames() []string
- func FuzzUtilDistinctSet[setType comparable](testSet []setType) []setType
- func FuzzUtilLimitSet[setType any](testSet []setType, max int) []setType
- func FuzzUtilMergeSets[setType any](sets ...[]setType) (merged []setType)
- func FuzzUtilModifySet[setType any](inputSet []setType, modifier func(index int, value setType) setType) (floats []setType)
- func FuzzUtilRunTests[setType any](t testRunner, testSet []setType, ...)
- func GetColorsEnabled() bool
- func GetDiffContextLines() int
- func GetLineNumbersEnabled() bool
- func GetRandomSeed() int64
- func GetShowStartupMessage() bool
- func SetColorsEnabled(enabled bool)
- func SetDiffContextLines(lines int)
- func SetLineNumbersEnabled(enabled bool)
- func SetRandomSeed(seed int64)
- func SetShowStartupMessage(show bool)
- func SnapshotCreate(name string, snapshotObject any) error
- func SnapshotCreateOrValidate(t testRunner, name string, object any, msg ...any) error
- func SnapshotValidate(t testRunner, name string, actual any, msg ...any) error
- type TestingPackageWithFailFunctions
Constants ΒΆ
This section is empty.
Variables ΒΆ
This section is empty.
Functions ΒΆ
func AssertCompletesIn ΒΆ
AssertCompletesIn asserts that a function completes in a given time. Use this function to test that functions do not take too long to complete.
NOTE: Every system takes a different amount of time to complete a function. Do not set the duration too low, if you want consistent results.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertCompletesIn(t, 2 * time.Second, func() {
// some code that should take less than 2 seconds...
}) // => PASS
func AssertContains ΒΆ
AssertContains asserts that a string/list/array/slice/map contains the specified element.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertContains(t, []int{1,2,3}, 2)
testza.AssertContains(t, []string{"Hello", "World"}, "World")
testza.AssertContains(t, "Hello, World!", "World")
func AssertDecreasing ΒΆ
AssertDecreasing asserts that the values in a slice are decreasing. the test fails if the values are not in a slice or if the values are not comparable.
Valid input kinds are: []int, []int8, []int16, []int32, []int64, []uint, []uint8, []uint16, []uint32, []uint64, []float32, []float64.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertDecreasing(t, []int{1000, 137, 2, 1})
testza.AssertDecreasing(t, []float32{13.5, 7, 0.1, -10.3})
func AssertDirEmpty ΒΆ
AssertDirEmpty asserts that a directory is empty. The test will pass when the directory is empty or does not exist.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertDirEmpty(t, "FolderName")
func AssertDirExists ΒΆ
AssertDirExists asserts that a directory exists. The test will pass when the directory exists, and it's visible to the current user. The test will fail, if the path points to a file.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertDirExists(t, "FolderName")
func AssertDirNotEmpty ΒΆ
AssertDirNotEmpty asserts that a directory is not empty The test will pass when the directory is not empty and will fail if the directory does not exist.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertDirNotEmpty(t, "FolderName")
func AssertEqual ΒΆ
AssertEqual asserts that two objects are equal.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertEqual(t, "Hello, World!", "Hello, World!") testza.AssertEqual(t, true, true)
func AssertEqualValues ΒΆ
AssertEqualValues asserts that two objects have equal values. The order of the values is also validated.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertEqualValues(t, []string{"Hello", "World"}, []string{"Hello", "World"})
testza.AssertEqualValues(t, []int{1,2}, []int{1,2})
testza.AssertEqualValues(t, []int{1,2}, []int{2,1}) // FAILS (wrong order)
Comparing struct values:
person1 := Person{
Name: "Marvin Wendt",
Age: 20,
Gender: "male",
}
person2 := Person{
Name: "Marvin Wendt",
Age: 20,
Gender: "male",
}
testza.AssertEqualValues(t, person1, person2)
func AssertErrorIs ΒΆ
AssertErrorIs asserts that target is inside the error chain of err.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
var testErr = errors.New("hello world")
var testErrWrapped = fmt.Errorf("test err: %w", testErr)
testza.AssertErrorIs(t, testErrWrapped ,testErr)
func AssertFalse ΒΆ
AssertFalse asserts that an expression or object resolves to false.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertFalse(t, false) testza.AssertFalse(t, 1 == 2) testza.AssertFalse(t, 2 != 2) testza.AssertFalse(t, 1 > 5 && 4 < 0)
func AssertFileExists ΒΆ
AssertFileExists asserts that a file exists.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertFileExists(t, "./test.txt") testza.AssertFileExists(t, "./config.yaml", "the config file is missing")
func AssertGreater ΒΆ
AssertGreater asserts that the first object is greater than the second.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertGreater(t, 5, 1) testza.AssertGreater(t, 10, -10)
func AssertGreaterOrEqual ΒΆ
func AssertGreaterOrEqual(t testRunner, object1, object2 interface{}, msg ...interface{})
AssertGreaterOrEqual asserts that the first object is greater than or equal to the second.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertGreaterOrEqual(t, 5, 1) testza.AssertGreaterOrEqual(t, 10, -10)
testza.AssertGreaterOrEqual(t, 10, 10)
func AssertImplements ΒΆ
AssertImplements asserts that an objects implements an interface.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertImplements(t, (*YourInterface)(nil), new(YourObject)) testza.AssertImplements(t, (*fmt.Stringer)(nil), new(types.Const)) => pass
func AssertInRange ΒΆ
func AssertInRange[T number](t testRunner, value T, min T, max T, msg ...any)
AssertInRange asserts that the value is in the range.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertInRange(t, 5, 1, 10)
func AssertIncreasing ΒΆ
AssertIncreasing asserts that the values in a slice are increasing. the test fails if the values are not in a slice or if the values are not comparable.
Valid input kinds are: []int, []int8, []int16, []int32, []int64, []uint, []uint8, []uint16, []uint32, []uint64, []float32, []float64.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertIncreasing(t, []int{1, 2, 137, 1000})
testza.AssertIncreasing(t, []float32{-10.3, 0.1, 7, 13.5})
func AssertKindOf ΒΆ
AssertKindOf asserts that the object is a type of kind exptectedKind.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertKindOf(t, reflect.Slice, []int{1,2,3})
testza.AssertKindOf(t, reflect.Slice, []string{"Hello", "World"})
testza.AssertKindOf(t, reflect.Int, 1337)
testza.AssertKindOf(t, reflect.Bool, true)
testza.AssertKindOf(t, reflect.Map, map[string]bool{})
func AssertLen ΒΆ
AssertLen asserts that the length of an object is equal to the given length.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertLen(t, "abc", 3)
testza.AssertLen(t, "Assert", 6)
testza.AssertLen(t, []int{1, 2, 1337, 25}, 4)
testza.AssertLen(t, map[string]int{"asd": 1, "test": 1337}, 2)
func AssertLess ΒΆ
AssertLess asserts that the first object is less than the second.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertLess(t, 1, 5) testza.AssertLess(t, -10, 10)
func AssertLessOrEqual ΒΆ
func AssertLessOrEqual(t testRunner, object1, object2 interface{}, msg ...interface{})
AssertLessOrEqual asserts that the first object is less than or equal to the second.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertLessOrEqual(t, 1, 5) testza.AssertLessOrEqual(t, -10, 10) testza.AssertLessOrEqual(t, 1, 1)
func AssertNil ΒΆ
AssertNil asserts that an object is nil.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNil(t, nil)
func AssertNoDirExists ΒΆ
AssertNoDirExists asserts that a directory does not exists. The test will pass, if the path points to a file, as a directory with the same name, cannot exist.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNoDirExists(t, "FolderName")
func AssertNoError ΒΆ
AssertNoError asserts that an error is nil.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
err := nil testza.AssertNoError(t, err)
func AssertNoFileExists ΒΆ
func AssertNoSubset ΒΆ
AssertNoSubset asserts that the second parameter is not a subset of the list. The order is irrelevant.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNoSubset(t, []int{1, 2, 3}, []int{1, 7})
testza.AssertNoSubset(t, []string{"Hello", "World", "Test"}, []string{"Test", "John"})
func AssertNotCompletesIn ΒΆ
AssertNotCompletesIn asserts that a function does not complete in a given time. Use this function to test that functions do not complete to quickly. For example if your database connection completes in under a millisecond, there might be something wrong.
NOTE: Every system takes a different amount of time to complete a function. Do not set the duration too high, if you want consistent results.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotCompletesIn(t, 2 * time.Second, func() {
// some code that should take more than 2 seconds...
time.Sleep(3 * time.Second)
}) // => PASS
func AssertNotContains ΒΆ
AssertNotContains asserts that a string/list/array/slice/map does not contain the specified element.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotContains(t, []string{"Hello", "World"}, "Spaceship")
testza.AssertNotContains(t, "Hello, World!", "Spaceship")
func AssertNotEqual ΒΆ
AssertNotEqual asserts that two objects are not equal.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotEqual(t, true, false) testza.AssertNotEqual(t, "Hello", "World")
func AssertNotEqualValues ΒΆ
AssertNotEqualValues asserts that two objects do not have equal values.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotEqualValues(t, []int{1,2}, []int{3,4})
Comparing struct values:
person1 := Person{
Name: "Marvin Wendt",
Age: 20,
Gender: "male",
}
person2 := Person{
Name: "Marvin Wendt",
Age: 20,
Gender: "female", // <-- CHANGED
}
testza.AssertNotEqualValues(t, person1, person2)
func AssertNotErrorIs ΒΆ
AssertNotErrorIs
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
var testErr = errors.New("hello world")
var test2Err = errors.New("hello world 2")
var testErrWrapped = fmt.Errorf("test err: %w", testErr)
testza.AssertNotErrorIs(t, testErrWrapped, test2Err)
func AssertNotImplements ΒΆ
AssertNotImplements asserts that an object does not implement an interface.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotImplements(t, (*YourInterface)(nil), new(YourObject)) testza.AssertNotImplements(t, (*fmt.Stringer)(nil), new(types.Const)) => fail, because types.Const does implement fmt.Stringer.
func AssertNotInRange ΒΆ
func AssertNotInRange[T number](t testRunner, value T, min T, max T, msg ...any)
AssertNotInRange asserts that the value is not in the range.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotInRange(t, 5, 1, 10)
func AssertNotKindOf ΒΆ
AssertNotKindOf asserts that the object is not a type of kind `kind`.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotKindOf(t, reflect.Slice, "Hello, World")
testza.AssertNotKindOf(t, reflect.Slice, true)
testza.AssertNotKindOf(t, reflect.Int, 13.37)
testza.AssertNotKindOf(t, reflect.Bool, map[string]bool{})
testza.AssertNotKindOf(t, reflect.Map, false)
func AssertNotNil ΒΆ
AssertNotNil asserts that an object is not nil.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotNil(t, true) testza.AssertNotNil(t, "Hello, World!") testza.AssertNotNil(t, 0)
func AssertNotNumeric ΒΆ
AssertNotNumeric checks if the object is not a numeric type. Numeric types are: Int, Int8, Int16, Int32, Int64, Float32, Float64, Uint, Uint8, Uint16, Uint32, Uint64, Complex64 and Complex128.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotNumeric(t, true) testza.AssertNotNumeric(t, "123")
func AssertNotPanics ΒΆ
func AssertNotPanics(t testRunner, f func(), msg ...any)
AssertNotPanics asserts that a function does not panic.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotPanics(t, func() {
// some code that does not call a panic...
}) // => PASS
func AssertNotRegexp ΒΆ
AssertNotRegexp asserts that a string does not match a given regexp.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotRegexp(t, "ab.*", "Hello, World!")
func AssertNotSameElements ΒΆ
AssertNotSameElements asserts that two slices contains same elements (including pointers). The order is irrelevant.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotSameElements(t, []string{"Hello", "World"}, []string{"Hello", "World", "World"})
testza.AssertNotSameElements(t, []int{1,2}, []int{1,2,3})
type A struct {
a string
}
testza.AssertNotSameElements(t, []*A{{a: "A"}, {a: "B"}, {a: "C"}}, []*A{{a: "A"}, {a: "B"}, {a: "C"}, {a: "D"}})
func AssertNotUnique ΒΆ
func AssertNotUnique[elementType comparable](t testRunner, list []elementType, msg ...any)
AssertNotUnique asserts that the elements in a list are not unique.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotUnique(t, []int{1, 2, 3, 3})
func AssertNotZero ΒΆ
AssertNotZero asserts that the value is not the zero value for it's type.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNotZero(t, 1337) testza.AssertNotZero(t, true) testza.AssertNotZero(t, "Hello, World")
func AssertNumeric ΒΆ
AssertNumeric asserts that the object is a numeric type. Numeric types are: Int, Int8, Int16, Int32, Int64, Float32, Float64, Uint, Uint8, Uint16, Uint32, Uint64, Complex64 and Complex128.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertNumeric(t, 123) testza.AssertNumeric(t, 1.23) testza.AssertNumeric(t, uint(123))
func AssertPanics ΒΆ
func AssertPanics(t testRunner, f func(), msg ...any)
AssertPanics asserts that a function panics.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertPanics(t, func() {
// ...
panic("some panic")
}) // => PASS
func AssertRegexp ΒΆ
AssertRegexp asserts that a string matches a given regexp.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertRegexp(t, "^a.*c$", "abc")
func AssertSameElements ΒΆ
AssertSameElements asserts that two slices contains same elements (including pointers). The order is irrelevant.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertSameElements(t, []string{"Hello", "World"}, []string{"Hello", "World"})
testza.AssertSameElements(t, []int{1,2,3}, []int{1,2,3})
testza.AssertSameElements(t, []int{1,2}, []int{2,1})
type A struct {
a string
}
testza.AssertSameElements(t, []*A{{a: "A"}, {a: "B"}, {a: "C"}}, []*A{{a: "A"}, {a: "B"}, {a: "C"}})
func AssertSubset ΒΆ
AssertSubset asserts that the second parameter is a subset of the list. The order is irrelevant.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertSubset(t, []int{1, 2, 3}, []int{1, 2})
testza.AssertSubset(t, []string{"Hello", "World", "Test"}, []string{"Test", "World"})
func AssertTestFails ΒΆ
func AssertTestFails(t testRunner, test func(t TestingPackageWithFailFunctions), msg ...any)
AssertTestFails asserts that a unit test fails. A unit test fails if one of the following methods is called in the test function: Error, Errorf, Fail, FailNow, Fatal, Fatalf
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertTestFails(t, func(t testza.TestingPackageWithFailFunctions) {
testza.AssertTrue(t, false)
}) // => Pass
testza.AssertTestFails(t, func(t testza.TestingPackageWithFailFunctions) {
// ...
t.Fail() // Or any other failing method.
}) // => Pass
func AssertTrue ΒΆ
AssertTrue asserts that an expression or object resolves to true.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertTrue(t, true) testza.AssertTrue(t, 1 == 1) testza.AssertTrue(t, 2 != 3) testza.AssertTrue(t, 1 > 0 && 4 < 5)
func AssertUnique ΒΆ
func AssertUnique[elementType comparable](t testRunner, list []elementType, msg ...any)
AssertUnique asserts that the list contains only unique elements. The order is irrelevant.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertUnique(t, []int{1, 2, 3})
testza.AssertUnique(t, []string{"Hello", "World", "!"})
func AssertZero ΒΆ
AssertZero asserts that the value is the zero value for it's type.
When using a custom message, the same formatting as with fmt.Sprintf() is used.
Example:
testza.AssertZero(t, 0) testza.AssertZero(t, false) testza.AssertZero(t, "")
func CaptureStderr ΒΆ
CaptureStderr captures everything written to stderr from a specific function. You can use this method in tests, to validate that your functions writes a string to the terminal.
Example:
stderr, err := testza.CaptureStderr(func(w io.Writer) error {
_, err := fmt.Fprint(os.Stderr, "Hello, World!")
testza.AssertNoError(t, err)
return nil
})
testza.AssertNoError(t, err)
testza.AssertEqual(t, "Hello, World!", stderr)
func CaptureStdout ΒΆ
CaptureStdout captures everything written to stdout from a specific function. You can use this method in tests, to validate that your functions writes a string to the terminal.
Example:
stdout, err := testza.CaptureStdout(func(w io.Writer) error {
fmt.Println("Hello, World!")
return nil
})
testza.AssertNoError(t, err)
testza.AssertEqual(t, "Hello, World!", stdout)
func CaptureStdoutAndStderr ΒΆ
func CaptureStdoutAndStderr(capture func(stdoutWriter, stderrWriter io.Writer) error) (stdout, stderr string, err error)
CaptureStdoutAndStderr captures everything written to stdout and stderr from a specific function. You can use this method in tests, to validate that your functions writes a string to the terminal.
Example:
stdout, stderr, err := testza.CaptureStdoutAndStderr(func(stdoutWriter, stderrWriter io.Writer) error {
fmt.Fprint(os.Stdout, "Hello")
fmt.Fprint(os.Stderr, "World")
return nil
})
testza.AssertNoError(t, err)
testza.AssertEqual(t, "Hello", stdout)
testza.AssertEqual(t, "World", stderr)
func FuzzBoolFull ΒΆ
func FuzzBoolFull() []bool
FuzzBoolFull returns true and false in a boolean slice.
func FuzzFloat64Full ΒΆ
func FuzzFloat64Full() (floats []float64)
FuzzFloat64Full returns a combination of every float64 testset and some random float64s (positive and negative).
func FuzzFloat64GenerateRandomNegative ΒΆ
FuzzFloat64GenerateRandomNegative generates random negative integers with a minimum of min. If the minimum is positive, it will be converted to a negative number. If it is set to 0, there is no limit.
func FuzzFloat64GenerateRandomPositive ΒΆ
FuzzFloat64GenerateRandomPositive generates random positive integers with a maximum of max. If the maximum is 0, or below, the maximum will be set to math.MaxInt64.
func FuzzFloat64GenerateRandomRange ΒΆ
FuzzFloat64GenerateRandomRange generates random positive integers with a maximum of max. If the maximum is 0, or below, the maximum will be set to math.MaxInt64.
func FuzzIntFull ΒΆ
func FuzzIntFull() (ints []int)
FuzzIntFull returns a combination of every integer testset and some random integers (positive and negative).
func FuzzIntGenerateRandomNegative ΒΆ
FuzzIntGenerateRandomNegative generates random negative integers with a minimum of min. If the minimum is 0, or above, the maximum will be set to math.MinInt64.
func FuzzIntGenerateRandomPositive ΒΆ
FuzzIntGenerateRandomPositive generates random positive integers with a maximum of max. If the maximum is 0, or below, the maximum will be set to math.MaxInt64.
func FuzzIntGenerateRandomRange ΒΆ
FuzzIntGenerateRandomRange generates random integers with a range of min to max.
func FuzzStringEmailAddresses ΒΆ
func FuzzStringEmailAddresses() []string
FuzzStringEmailAddresses returns a test set with valid email addresses. The addresses may look like they are invalid, but they are all conform to RFC 2822 and could be used. You can use this test set to test your email validation process.
func FuzzStringEmpty ΒΆ
func FuzzStringEmpty() []string
FuzzStringEmpty returns a test set with a single empty string.
func FuzzStringFull ΒΆ
func FuzzStringFull() (ret []string)
FuzzStringFull contains all string test sets plus ten generated random strings. This test set is huge and should only be used if you want to make sure that no string, at all, can crash a process.
func FuzzStringGenerateRandom ΒΆ
FuzzStringGenerateRandom returns random strings in a test set.
func FuzzStringHtmlTags ΒΆ
func FuzzStringHtmlTags() []string
FuzzStringHtmlTags returns a test set with different html tags.
Example:
- <script>
- <script>alert('XSS')</script>
- <a href="https://github.com/kumose-go/testza">link</a>
func FuzzStringLong ΒΆ
func FuzzStringLong() (testSet []string)
FuzzStringLong returns a test set with long random strings. Returns: [0]: Random string (length: 25) [1]: Random string (length: 50) [2]: Random string (length: 100) [3]: Random string (length: 1,000) [4]: Random string (length: 100,000)
func FuzzStringNumeric ΒΆ
func FuzzStringNumeric() []string
FuzzStringNumeric returns a test set with strings that are numeric. The highest number in here is "9223372036854775807", which is equal to the maxmim int64.
func FuzzStringUsernames ΒΆ
func FuzzStringUsernames() []string
FuzzStringUsernames returns a test set with usernames.
func FuzzUtilDistinctSet ΒΆ
func FuzzUtilDistinctSet[setType comparable](testSet []setType) []setType
FuzzUtilDistinctSet returns a set with removed duplicates.
Example:
uniqueSet := testza.FuzzUtilDistinctSet([]string{"A", "C", "A", "B", "A", "B", "C"})
// uniqueSet => []string{"A", "C", "B"}
func FuzzUtilLimitSet ΒΆ
FuzzUtilLimitSet returns a random sample of a test set with a maximal size.
Example:
limitedSet := testza.FuzzUtilLimitSet(testza.FuzzStringFull(), 10)
func FuzzUtilMergeSets ΒΆ
func FuzzUtilMergeSets[setType any](sets ...[]setType) (merged []setType)
FuzzUtilMergeSets merges multiple test sets into one. All test sets must have the same type.
Example:
mergedSet := testza.FuzzUtilMergeSets(testza.FuzzIntGenerateRandomNegative(3, 0), testza.FuzzIntGenerateRandomPositive(2, 0))
func FuzzUtilModifySet ΒΆ
func FuzzUtilModifySet[setType any](inputSet []setType, modifier func(index int, value setType) setType) (floats []setType)
FuzzUtilModifySet returns a modified version of a test set.
Example:
modifiedSet := testza.FuzzUtilModifySet(testza.FuzzIntFull(), func(i int, value int) int {
return i * 2 // double every value in the test set
})
func FuzzUtilRunTests ΒΆ
func FuzzUtilRunTests[setType any](t testRunner, testSet []setType, testFunc func(t *testing.T, index int, f setType))
FuzzUtilRunTests runs a test for every value in a test set. You can use the value as input parameter for your functions, to sanity test against many different cases. This ensures that your functions have a correct error handling and enables you to test against hundreds of cases easily.
Example:
testza.FuzzUtilRunTests(t, testza.FuzzStringEmailAddresses(), func(t *testing.T, index int, emailAddress string) {
// Test logic
// err := YourFunction(emailAddress)
// testza.AssertNoError(t, err)
// ...
})
func GetColorsEnabled ΒΆ
func GetColorsEnabled() bool
GetColorsEnabled returns current value of ColorsEnabled setting. ColorsEnabled controls if testza should print colored output.
func GetDiffContextLines ΒΆ
func GetDiffContextLines() int
GetDiffContextLines returns current value of DiffContextLines setting. DiffContextLines setting controls how many lines are shown around a changed diff line. If set to -1 it will show full diff.
func GetLineNumbersEnabled ΒΆ
func GetLineNumbersEnabled() bool
GetLineNumbersEnabled returns current value of LineNumbersEnabled setting. LineNumbersEnabled controls if line numbers should be printed in failing tests.
func GetRandomSeed ΒΆ
func GetRandomSeed() int64
GetRandomSeed returns current value of the random seed setting.
func GetShowStartupMessage ΒΆ
func GetShowStartupMessage() bool
GetShowStartupMessage returns current value of showStartupMessage setting. showStartupMessage setting controls if the startup message should be printed.
func SetColorsEnabled ΒΆ
func SetColorsEnabled(enabled bool)
SetColorsEnabled controls if testza should print colored output. You should use this in the init() method of the package, which contains your tests.
> This setting can also be set by the command line flag --testza.disable-color.
Example:
init() {
testza.SetColorsEnabled(false) // Disable colored output
testza.SetColorsEnabled(true) // Enable colored output
}
func SetDiffContextLines ΒΆ
func SetDiffContextLines(lines int)
SetDiffContextLines controls how many lines are shown around a changed diff line. If set to -1 it will show full diff. You should use this in the init() method of the package, which contains your tests.
> This setting can also be set by the command line flag --testza.diff-context-lines.
Example:
init() {
testza.SetDiffContextLines(-1) // Show all diff lines
testza.SetDiffContextLines(3) // Show 3 lines around every changed line
}
func SetLineNumbersEnabled ΒΆ
func SetLineNumbersEnabled(enabled bool)
SetLineNumbersEnabled controls if line numbers should be printed in failing tests. You should use this in the init() method of the package, which contains your tests.
> This setting can also be set by the command line flag --testza.disable-line-numbers.
Example:
init() {
testza.SetLineNumbersEnabled(false) // Disable line numbers
testza.SetLineNumbersEnabled(true) // Enable line numbers
}
func SetRandomSeed ΒΆ
func SetRandomSeed(seed int64)
SetRandomSeed sets the seed for the random generator used in testza. Using the same seed will result in the same random sequences each time and guarantee a reproducible test run. Use this setting, if you want a 100% deterministic test. You should use this in the init() method of the package, which contains your tests.
> This setting can also be set by the command line flag --testza.seed.
Example:
init() {
testza.SetRandomSeed(1337) // Set the seed to 1337
testza.SetRandomSeed(time.Now().UnixNano()) // Set the seed back to the current time (default | non-deterministic)
}
func SetShowStartupMessage ΒΆ
func SetShowStartupMessage(show bool)
SetShowStartupMessage controls if the startup message should be printed. You should use this in the init() method of the package, which contains your tests.
> This setting can also be set by the command line flag --testza.disable-startup-message.
Example:
init() {
testza.SetShowStartupMessage(false) // Disable the startup message
testza.SetShowStartupMessage(true) // Enable the startup message
}
func SnapshotCreate ΒΆ
SnapshotCreate creates a snapshot of an object, which can be validated in future test runs. Using this function directly will override previous snapshots with the same name. You most likely want to use SnapshotCreateOrValidate.
NOTICE: \r\n will be replaced with \n to make the files consistent between operating systems.
Example:
testza.SnapshotCreate(t.Name(), objectToBeSnapshotted)
func SnapshotCreateOrValidate ΒΆ
SnapshotCreateOrValidate creates a snapshot of an object which can be used in future test runs. It is good practice to name your snapshots the same as the test they are created in. You can do that automatically by using t.Name() as the second parameter, if you are using the inbuilt test system of Go. If a snapshot already exists, the function will not create a new one, but validate the exisiting one. To re-create a snapshot, you can delete the according file in /testdata/snapshots/.
NOTICE: \r\n will be replaced with \n to make the files consistent between operating systems.
Example:
testza.SnapshotCreateOrValidate(t, t.Name(), object) testza.SnapshotCreateOrValidate(t, t.Name(), object, "Optional Message")
func SnapshotValidate ΒΆ
SnapshotValidate validates an already exisiting snapshot of an object. You most likely want to use SnapshotCreateOrValidate.
NOTICE: \r\n will be replaced with \n to make the files consistent between operating systems.
Example:
testza.SnapshotValidate(t, t.Name(), objectToBeValidated) testza.SnapshotValidate(t, t.Name(), objectToBeValidated, "Optional message")
Types ΒΆ
type TestingPackageWithFailFunctions ΒΆ
type TestingPackageWithFailFunctions interface {
Error(args ...any)
Errorf(format string, args ...any)
Fail()
FailNow()
Fatal(args ...any)
Fatalf(format string, args ...any)
}
TestingPackageWithFailFunctions contains every function that fails a test in testing.T.