亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 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 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號