gpt4 book ai didi

testing - 在 Golang 的 TestMain() 中调用不同的测试函数

转载 作者:IT王子 更新时间:2023-10-29 02:21:12 25 4
gpt4 key购买 nike

我正在尝试测试我的 http Controller 并且我使用 TestMain 函数来准备我的测试,但是在我运行所有测试请求之前我需要先运行 TestAuthUserController 测试,它创建并授权用户.为此,我使用了 wrapper func,它帮助我调用 TestAuthUserController:

func TestMain(m *testing.M)  {
//some prepearing steps
AuthUserController()//create and authorize user before all other tests
m.Run()
fmt.Println("after all in main")
dbMdm.End()
}

//AuthUserController is a wrapper func to run TestAuthUserController before all other tests in TestMain func
func AuthUserController() func(t *testing.T){
fmt.Println("in wrapper")
return TestAuthUserController
}

这是我的TestAuthUserController:

//TestAuthUserController tests in series creation of new user and his authorization
func TestAuthUserController(t *testing.T) {
t.Run("testCreateUserSuccessBeforeAuthorize", testCreateUserSuccessBeforeAuthorize)
t.Run("testAuthorizeUserSuccess", testAuthorizeUserSuccess)
}

当我运行命令 go test - 没问题! TestMain 调用它成功,但是当我试图单独运行一些测试时,例如 go test -run TestSomeController 它失败了,因为 TestAuthUserController 在这种情况下没有运行。

最佳答案

func setupTestUserAndAuthorise(){
// create user, authorise

// return User
}

func deleteTestUser(user User){
// delete user and other clean up actions
}

func TestCase1(t *testing.T){
user := setupUserAndAuthorise()
defer deleteTestUser(user)

// use this user in test
}

您可以创建一个函数来创建新用户、授权并返回它。测试运行后,您可以调用删除用户等的清理函数。

单元测试的执行顺序不应影响测试的结果。

关于testing - 在 Golang 的 TestMain() 中调用不同的测试函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48899505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com