首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在golang中使用stretchr/testify运行带有表测试的验证设置/拆卸?

如何在golang中使用stretchr/testify运行带有表测试的验证设置/拆卸?
EN

Stack Overflow用户
提问于 2021-04-17 19:51:11
回答 1查看 1.4K关注 0票数 2

我正在使用testify进行测试。我已经为我的测试设置了一个suite。但是,在使用表测试时,我在使用设置和拆卸功能时遇到了问题。这是设计出来的吗?

代码语言:javascript
复制
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时,我得到以下输出:

代码语言:javascript
复制
=== 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 (或其他替代方法)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-17 21:14:23

这就是证言如何工作的预期行为。针对TestSuite而不是针对每个子测试(表测试用例)调用设置/之前/之后。有一个Github issue here

在进行实际测试之前,只需在循环中调用s.SetupTest()即可。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67137839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档