golang test測試執行個體

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

本文的目的是對mymysql進行單元測試和效能測試

準備工作:

1 go get github.com/ziutek/mymysql/thrsafe

2 在mysql建表和初始化資料(db是test)

drop table if exists admin;CREATE TABLE `admin` (    `adminid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,    `username` varchar(20) NOT NULL DEFAULT '' COMMENT '後台使用者名稱',    `password` char(32) NOT NULL DEFAULT '' COMMENT '密碼,md5存',    PRIMARY KEY(`adminid`))COMMENT='後台使用者資訊表'COLLATE='utf8_general_ci'ENGINE=InnoDB;insert into admin set adminid=1, username='admin', password='21232f297a57a5a743894a0e4a801fc3';

3 gopath下建立mymysql

4 mymysql.go的代碼:

package mymysqlimport(     "log"     "github.com/ziutek/mymysql/mysql"     _ "github.com/ziutek/mymysql/native")func getAdmin(adminid int) (string, string){     db := mysql.New("tcp", "", "127.0.0.1:3306", "root", "password", "test")     err := db.Connect()     if err != nil {          panic(err)     }     rows, res, err := db.Query("select * from admin where adminid=%d", adminid)     if err != nil {          panic(err)     }     if len(rows) < 1 {          log.Panic("rows error")     }     row := rows[0]     first := res.Map("username")     second := res.Map("password")     username, password := row.Str(first), row.Str(second)     return username, password}

很好理解,根據adminid擷取使用者名稱和密碼

5 mymysql_test.go的代碼:

package mymysqlimport(     "testing")func Test_getAdmin(t *testing.T) {    username, _ := getAdmin(1)    if (username != "admin") {         t.Error("getAdmin get data error")    }}
這裡做單元測試的,測試getAdmin函數

寫到這裡你就可以在命令列中運行go test了

這裡有個 -v參數,如果不加這個參數的話,只會顯示錯誤的測試案例,否則就顯示所有的測試案例(成功 + 錯誤)

6 下面做效能測試

mymysql_b_test.go的代碼:

package mymysqlimport (     "testing")func Benchmark_getAdmin(b *testing.B){     for i := 0; i < b.N; i++ { //use b.N for looping            getAdmin(1)    }}

然後運行 go test -v -bench=".*"

這裡的-bench是可以指定啟動並執行用例

返回結果表示這個測試案例在1s中內運行了2000次,每次調用大約用了891898ns

7 用效能測試產生CPU狀態圖

使用命令:

go test -bench=".*" -cpuprofile=cpu.prof -c

cpuprofile是表示產生的cpu profile檔案

-c是產生可執行檔二進位檔案,這個是產生狀態圖必須的,它會在本目錄下產生可執行檔mymysql.test

然後使用go tool pprof工具

go tool pprof mymysql.test cpu.prof

 

調用web(需要安裝graphviz)

顯示svg檔案已經產生了

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.