为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 golang 中编写关于插入、获取、删除和更新数据的测试用例

如何在 golang 中编写关于插入、获取、删除和更新数据的测试用例

Go
MM们 2023-03-29 17:15:52
我必须编写用于插入、获取、删除和更新数据的测试用例。在互联网上搜索时,我找到了一个代码并且它可以工作,但我不知道它是如何工作的。我的代码在下面给出,任何人都可以用简单的方式告诉我我将如何理解代码。package modelsimport(    "testing"    "gopkg.in/mgo.v2/bson"    "fmt")func TestAddBlog(t *testing.T) {    type args struct{        query interface{}    }    tests := []struct{        name string        args args        want bool    }{        {            "first",            args{               bson.M{                   "_id" : 4,                   "title" : "Life",                   "type" : "Motivation",                   "description" : "If you skip anything then you will fail in the race of the life....",                   "profile_image" : "/image1",                   "date_time" : 1536062976,                   "author" : "Charliee",                   "status" : 1,                   "slug" : "abc",                   "comment_count" : 100,                   "comment_status" : "q",                },            },            true,        },        {           "second",           args{               bson.M{                   "_id" : 5,                   "title" : "Life",                   "type" : "Motivation",                   "description" : "If you skip anything then you will fail in the race of the life....",                   "profile_image" : "/image1",                   "date_time" : 1536062976,                   "author" : "Charliee",                   "status" : 1,                   "slug" : "abc",                   "comment_count" : 100,                   "comment_status" : "q",                },            },            false,        },    }    for _, k := range tests {        t.Run(k.name, func (t *testing.T) {            err := AddBlog(k.args.query)            fmt.Println(err)        })    }} 
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

下面我提供了称为表驱动测试的测试用例形式


type args struct {

}

tests := []struct {

    name string

    args args

    want bool

}{

    {

        "First",

        args{


        },

        true,

    },

    {

        "Second",

        args{


        },

        false,

    },

}

for _, tt := range tests {

    t.Run(tt.name, func(t *testing.T) {

    })

}

在下面的代码中,我们所做的是:


*用三个参数声明一个 Struct([]struct) 片段


1.Name:- 它将用于在 t.Run 中命名测试。


2.Args:- 在这里我们指定我们要测试的函数所需的参数。


3.Want:- 这是布尔表达式,将用于与我们的结果输出进行比较。


现在在你的代码中你已经在数据库中添加了一些东西所以你需要调用一个函数来获取记录。


如果 err 等于 nil 通过 addblog 函数。


之后,您可以通过比较结果并将结果保存为 bool 来比较是否保存了所有值,我们可以将其用于与我们想要的 bool 表达式进行比较。


会发生这样的事情:


 err:=  AddBlog(k.args.query)

 if err==nil{

 got,err:=fetchBlog(k.args.query)

 if val:=err==nil && got.id==id;val!=k.want{

   t.Fail()

  }

 }

注意:这里我比较了 Id 属性,因为它是唯一的。


你需要先在你的参数中声明它。


查看完整回答
反对 回复 2023-03-29
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信