testify

package module
v2.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 10, 2023 License: MIT Imports: 1 Imported by: 0

README

Testify Suite fork for the Parallel tests

This is a fork of testify/suite for the Parallel tests support.

You should use the testify if you don't need the parallel tests because this work is not meant to have continuous improvement. It's as it is now, and I am satisfied with the current module.

Thanks

Go Report Card PkgGoDev

Go code (golang) set of packages that provide many tools for testifying that your code will behave as you intend.

Features include:

Get started:

suite package

The suite package provides functionality that you might be used to from more common object-oriented languages. With it, you can build a testing suite as a struct, build setup/teardown methods and testing methods on your struct, and run them with 'go test' as per normal.

An example suite is shown below:

// Basic imports
import (
    "testing"
    "github.com/stretchr/testify/assert"
    "github.com/denist-huma/testify/v2/suite"
)

// Define the suite, which is simply a struct with all
// fields that tests need.
type ExampleTestSuite struct {
    VariableThatShouldStartAtFive int
}

// Make sure that VariableThatShouldStartAtFive is set to five
// before each test
func (suite *ExampleTestSuite) SetupTest() {
    suite.VariableThatShouldStartAtFive = 5
}

// All methods that begin with "Test" are run as tests within a
// suite.
func (suite *ExampleTestSuite) TestExample(t *suite.T) {
    assert.Equal(t, 5, suite.VariableThatShouldStartAtFive)
}

// In order for 'go test' to run this suite, we need to create
// a normal test function and pass our suite to suite.Run
func TestExampleTestSuite(t *testing.T) {
    suite.Run(t, new(ExampleTestSuite))
}

For a more complete example, using all of the functionality provided by the suite package, look at our example testing suite

For more information on writing suites, check out the API documentation for the suite package.

Parallel Tests

This example TestSuiteParallelSubTests shows that the issue with the parallel tests is solved. You should see that TearDownTest waits until all parallel sub-tests finished.

import (
  "testing"

  "github.com/denist-huma/testify/v2/suite"
)

func TestSuiteParallelSubTests(t *testing.T) {
  suite.Run(t, &Suite{})
}

type Suite struct{}

func (s *Suite) TearDownSuite(t *suite.T) {
  t.Log(">> suite tear down")
}

func (s *Suite) TearDownTest(t *suite.T) {
  t.Log(">> single test tear down")
}

func (s *Suite) TestOne(t *suite.T) {
  for _, v := range []string{"sub1", "sub2", "sub3"} {
    t.Run(v, func(t *suite.T) {
      t.Parallel()
    })
  }
}

func (s *Suite) TestTwo(t *suite.T) {
  for _, v := range []string{"sub1", "sub2", "sub3"} {
    t.Run(v, func(t *suite.T) {
      t.Parallel()
    })
  }
}

The expected test output is below:

$ go test -v .
=== RUN   TestSuiteParallelSubTests
=== RUN   TestSuiteParallelSubTests/All
=== RUN   TestSuiteParallelSubTests/All/TestOne
=== RUN   TestSuiteParallelSubTests/All/TestOne/sub1
=== PAUSE TestSuiteParallelSubTests/All/TestOne/sub1
=== RUN   TestSuiteParallelSubTests/All/TestOne/sub2
=== PAUSE TestSuiteParallelSubTests/All/TestOne/sub2
=== RUN   TestSuiteParallelSubTests/All/TestOne/sub3
=== PAUSE TestSuiteParallelSubTests/All/TestOne/sub3
=== NAME  TestSuiteParallelSubTests/All/TestOne
    suite.go:64: >> single test tear down
=== CONT  TestSuiteParallelSubTests/All/TestOne/sub1
=== CONT  TestSuiteParallelSubTests/All/TestOne/sub3
=== CONT  TestSuiteParallelSubTests/All/TestOne/sub2
=== RUN   TestSuiteParallelSubTests/All/TestTwo
=== RUN   TestSuiteParallelSubTests/All/TestTwo/sub1
=== PAUSE TestSuiteParallelSubTests/All/TestTwo/sub1
=== RUN   TestSuiteParallelSubTests/All/TestTwo/sub2
=== PAUSE TestSuiteParallelSubTests/All/TestTwo/sub2
=== RUN   TestSuiteParallelSubTests/All/TestTwo/sub3
=== PAUSE TestSuiteParallelSubTests/All/TestTwo/sub3
=== NAME  TestSuiteParallelSubTests/All/TestTwo
    suite.go:64: >> single test tear down
=== CONT  TestSuiteParallelSubTests/All/TestTwo/sub1
=== CONT  TestSuiteParallelSubTests/All/TestTwo/sub3
=== CONT  TestSuiteParallelSubTests/All/TestTwo/sub2
=== NAME  TestSuiteParallelSubTests
    suite.go:64: >> suite tear down
--- PASS: TestSuiteParallelSubTests (0.00s)
    --- PASS: TestSuiteParallelSubTests/All (0.00s)
        --- PASS: TestSuiteParallelSubTests/All/TestOne (0.00s)
            --- PASS: TestSuiteParallelSubTests/All/TestOne/sub1 (0.00s)
            --- PASS: TestSuiteParallelSubTests/All/TestOne/sub3 (0.00s)
            --- PASS: TestSuiteParallelSubTests/All/TestOne/sub2 (0.00s)
        --- PASS: TestSuiteParallelSubTests/All/TestTwo (0.00s)
            --- PASS: TestSuiteParallelSubTests/All/TestTwo/sub1 (0.00s)
            --- PASS: TestSuiteParallelSubTests/All/TestTwo/sub3 (0.00s)
            --- PASS: TestSuiteParallelSubTests/All/TestTwo/sub2 (0.00s)
PASS
ok      github.com/denist-huma/testify/v2       0.005s

Installation

To install Testify, use go get: go get github.com/denist-huma/testify/v2

This will then make the following packages available to you: github.com/denist-huma/testify/v2/suite

Staying up-to-date

To update Testify to the latest version, use go get -u github.com/denist-huma/testify/v2.

Supported go versions

We currently support the most recent major Go versions from 1.13 onward.

Contributing

there is a problem that

Please feel free to submit issues, fork the repository and send pull requests!

When submitting an issue, we ask that you please include a complete test function that demonstrates the issue. Extra credit for those using Testify to write the test code that demonstrates it.

License

This project is licensed under the terms of the MIT license.

Documentation

Overview

Package testify is a set of packages that provide many tools for testifying that your code will behave as you intend.

testify contains the following packages:

The suite package provides a simple structure for using structs as testing suites, and methods on those structs as tests. It includes setup/teardown functionality in the way of interfaces.

Directories

Path Synopsis
Package suite contains logic for creating testing suite structs and running the methods on those structs as tests.
Package suite contains logic for creating testing suite structs and running the methods on those structs as tests.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL