猿问

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

我必须编写用于插入、获取、删除和更新数据的测试用例。在互联网上搜索时,我找到了一个代码并且它可以工作,但我不知道它是如何工作的。我的代码在下面给出,任何人都可以用简单的方式告诉我我将如何理解代码。


package models


import(

    "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)

        })

    }


MM们
浏览 98回答 1
1回答

子衿沉夜

下面我提供了称为表驱动测试的测试用例形式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 属性,因为它是唯一的。你需要先在你的参数中声明它。
随时随地看视频慕课网APP

相关分类

Go
我要回答