Go單元測試 testing

2021-10-02 20:27:21 字數 2638 閱讀 1563

在開發程式中,很重要一點就是測試,測試可以保證**的質量,保證每個函式可以正常執行。但是如何保證寫出來的程式是否正確。單元測試一般是用來測試我們的**邏輯有沒有問題,有沒有按照我們期望的執行,以保證**質量。

testing - 單元測試

go語言自帶有乙個輕量級的測試框架testing和自帶的go test命令來實現單元測試(t型別)和效能測試(b型別)。testing框架和其他語言中的測試框架類似,你可以基於這個框架寫針對相應函式的測試用例,也可以基於該框架寫相應的壓力測試用例。下面主要以單元測試講解。

如何編寫測試用例

由於go test命令只能在乙個相應的目錄下執行所有檔案,所以我們接下來新建乙個專案目錄gotest,這樣我們 所有的**和測試**都在這個目錄下。

接下來我們在該目錄下面建立兩個檔案:gotest.go和gotest_test.go

//給monster繫結方法,可以將乙個monster變數(物件),序列化後儲存到檔案中

func

(this *monster)

store()

bool

//儲存到檔案

filepath :=

"./monster.ser"

err = ioutil.

writefile

(filepath,data,

0666

)if err !=

nilreturn

true

}//給monster 繫結方法restore,可以將乙個序列化的marshal(),從檔案中讀取

//並反序列化為monster物件,檢查反序列化,名字正確

func

(this *monster)

restore()

bool

//2.使用讀取到data byte,對反序列化

err = json.

unmarshal

(data,this)

if err !=

nilreturn

true

}gotest_test.go

這是我們的單元測試檔案。通過 go test 命令,能夠自動執行如下形式的任何函式:

package gotest

import

("testing"

)//測試用例,測試store方法

func

teststore

(t *testing.t)

res := monster.

store()

if!res

t.logf

("monster.store(),測試成功!")}

func

testrestore

(t *testing.t)

res := monster.

restore()

if!res

//進一步判斷

if monster.name !=

"minger"

t.logf

("monster.restore() 測試成功!"

)}

然後我們在終端的專案目錄下執行go test -v就可以看到測試結果了。go test -v:顯示所有測試函式執行細節

monster.ser 檔案內容:

go test -run teststore 指定要執行的測試函式。

gotest_test.go:這是我們的單元測試檔案,但是記住下面的這些原則:

1、檔名必須是_test.go結尾的,這樣在執行go test的時候才會執行到相應的**

2、單元測試的函式名必須以test開頭,是可匯出公開的函式

3、測試函式test***

()的傳遞給測試函式的引數是 *testing.t 型別。它用於管理測試狀態並支援格式化測試日誌。

4、測試格式:func test*** (t *testing.t)

,***部分可以為任意的字母數字的組合,但是首字母不能是小寫字母[a-z],例如testintdiv是錯誤的函式名。

5、函式中通過呼叫testing.t的error, errorf, failnow, fatal, fatalif方法,說明測試不通過,呼叫log、logf方法用來記錄測試的資訊。

Tornado 自帶Testing單元測試模組

asynctestcase 可以看做是對 ioloop 的乙個封裝,並以 testcase 的形式提供使用介面。class testfunc1 asynctestcase 這步如果不寫,會報錯傳入引數沒有ioloop,會導致無法進入runtest裡面 def get new ioloop self ...

go單元測試

go本身提供了一套輕量級的測試框架。mytest工程下有兩個檔案 main.go package main func main func add a,b int intmain test.go package main import testing func testadd1 t testing.t...

Go單元測試

對包含網路請求和響應的函式進行單元測試需要我們模擬客戶端請求和服務端返回。以乙個登入模組為例,main.go檔案如下 其中的重點是利用 http.newrequest構造乙個虛擬的http get請求,再用httptest.newrecorder 建立http.responesewriter,模擬真...