10 go test單元測試

2021-07-08 09:11:52 字數 1933 閱讀 6483

之前看了go官方的github上關於golang的單元測試,現在總結一下關鍵的地方。

單個測試

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

你必須import testing這個包

所有的測試用例函式必須是test開頭 測試用例會按照源**中寫的順序依次執行

測試格式:func test***(t *testing.t),***部分可以為任意的字母數字的組合,但是首字母不能是小寫字母[a-z],例如testintdiv是錯誤的函式名。

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

舉個例子

package gotest

import (

"testing"

)func division(a, b float64) (float64, error)

return a / b, nil

}func test_division_1(t *testing.t) else

}func test_division_2(t *testing.t)

我們在專案目錄下面執行go test,就會顯示如下資訊

— fail: test_division_2 (0.00 seconds)

gotest_test.go:16: 就是不通過

fail

exit status 1

fail gotest 0.013s

壓力測試

壓力測試用來檢測函式(方法)的效能,和編寫單元功能測試的方法類似

壓力測試用例必須遵循如下格式,其中***可以是任意字母數字的組合,但是首字母不能是小寫字母

func benchmark***(b *testing.b) go

test不會預設執行壓力測試的函式,如果要執行壓力測試需要帶上引數-test.bench,語法:-test.bench=」test_name_regex」,例如go test -test.bench=」.*」表示測試全部的壓力測試函式

在壓力測試用例中,請記得在迴圈體內使用testing.b.n,以使測試可以正常的執行

檔名也必須以_test.go結尾

例子

package gotest

import (

"testing"

)func benchmark_division(b *testing.b)

}func benchmark_timeconsumingfunction(b *testing.b)

}

我們執行命令go test -file webbench_test.go -test.bench=」.*」,可以看到如下結果:

pass

benchmark_division

500000000

7.76

ns/op

benchmark_timeconsumingfunction

500000000

7.80

ns/op

okgotest

9.364s

上面的結果顯示我們沒有執行任何test***的單元測試函式,顯示的結果只執行了壓力測試函式,第一條顯示了benchmark_division執行了500000000次,每次的執行平均時間是7.76納秒,第二條顯示了benchmark_timeconsumingfunction執行了500000000,每次的平均執行時間是7.80納秒。最後一條顯示總共的執行時間。

"test*"

go Test 單元測試 測試框架

1.建立乙個名為 test.go 的檔案 如果是包中的單元測試,就在包所在目錄下建立該檔案 並將下面的 新增到其中,函式命名統一為test t testing.t package main 包中的單元測試main替換成包名 import testing func testsum t testing....

單元測試 單元測試文章收藏

前言 前段時間公司計畫做自動化測試,自己也打算圍繞幾個點做相關調研,現在想想呢?其實對自動化測試的概念都還不是十分清晰,當時主要還是圍繞 單元測試 向qa小夥伴學習了一段時間,現由於公司重組,學習中斷,這裡簡單記錄一些單元測試好文,留待後續參考.什麼叫自動化測試?自動化測試覆蓋率?覆蓋率如何做到的?...

單元測試之Django單元測試

每個應用,自帶tests.py 整合在django的專案檔案裡,更多是開發人員寫django自動的測試執行 3.1 前後置方法執行特點 django.test.testcase類主要由前 後置處理方法和test開頭的方法組成 特點 繼承於django.test.testcase 測試用例都是test...