【问题标题】:How to run testify setup/teardown with table tests using stretchr/testify in golang?如何在golang中使用stretchr/testify通过表测试运行testify setup/teardown?
【发布时间】:2021-04-17 11:51:10
【问题描述】:

我正在使用testify 进行测试。我为我的测试设置了suite。但是,在使用表测试时,我无法使用设置和拆卸功能。这是设计的吗?

package workflows

import (
    "testing"

    log "github.com/sirupsen/logrus"
    "github.com/stretchr/testify/suite"
)

type UnitTestSuite struct {
    suite.Suite
}

func (s *UnitTestSuite) SetupTest() {
    log.Info("setup")
}

func (s *UnitTestSuite) BeforeTest(suiteName, testName string) {
    log.Info("before test")
}

func (s *UnitTestSuite) AfterTest(suiteName, testName string) {
    log.Info("After test")
}


func (s *UnitTestSuite) Test_TableTest() {

    type testCase struct {
        name string
    }

    testCases := []testCase{
        {
            name: "1",
        },
        {
            name: "2",
        },
    }

    for _, testCase := range testCases {

        s.Run(testCase.name, func() {
            // logic ...
            // NOTE that the SetupTest and BeforeTest do not get called for each test here
        })
    }
}

func TestUnitTestSuite(t *testing.T) {
    suite.Run(t, new(UnitTestSuite))
}

当我运行 TestUnitTestSuite 时,我得到以下输出:

=== RUN   TestUnitTestSuite
--- PASS: TestUnitTestSuite (0.00s)
=== RUN   TestUnitTestSuite/Test_TableTest
time="2021-04-17T07:49:28-04:00" level=info msg=setup
time="2021-04-17T07:49:28-04:00" level=info msg="before test"
    --- PASS: TestUnitTestSuite/Test_TableTest (0.00s)
=== RUN   TestUnitTestSuite/Test_TableTest/1
        --- PASS: TestUnitTestSuite/Test_TableTest/1 (0.00s)
=== RUN   TestUnitTestSuite/Test_TableTest/2
time="2021-04-17T07:49:28-04:00" level=info msg="After test"
        --- PASS: TestUnitTestSuite/Test_TableTest/2 (0.00s)
PASS

请注意,setupbefore test 在输出中仅出现一次,即使有两个测试正在运行。

我有没有办法在我的每个表测试之前自动运行SetupTest(或其他替代方法)?

【问题讨论】:

    标签: go testify


    【解决方案1】:

    这是 testify 工作方式的预期行为。为 TestSuite 而不是每个子测试(表测试用例)调用 Setup/Before/After。有一个Github issue here

    在进行实际测试之前,您可以在循环中调用s.SetupTest()

    【讨论】:

      猜你喜欢
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多