加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang test测试实例

发布时间:2020-12-16 18:56:58 所属栏目:大数据 来源:网络整理
导读:本文的目的是对mymysql进行单元测试和性能测试 准备工作: 1 go get github.com/ziutek/mymysql/thrsafe 2 在mysql建表和初始化数据(db是test) 1 2 3 4 5 6 7 8 9 10 11 12 drop table if exists admin; CREATE TABLE `admin` ( `adminid` INT(10) UNSIGNE

本文的目的是对mymysql进行单元测试和性能测试

准备工作:

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

2 在mysql建表和初始化数据(db是test)

1
2
3
4
5
6
7
8
9
10
11
12
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 '密码,md5存' PRIMARY KEY(`adminid`)
)
COMMENT= '后台用户信息表'
COLLATE= 'utf8_general_ci'
ENGINE=InnoDB;
insert into admin set adminid=1,username= 'admin' '21232f297a57a5a743894a0e4a801fc3' ;

3 gopath下建立mymysql

4 mymysql.go的代码:

12
13
14
15
16
17
18
19
20
21
22
23
24
25
package mymysql
import(
"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()
err != nil {
panic(err)
}
rows,res,err := db.Query( "select * from admin where adminid=%d" err != nil {
panic(err)
}
len(rows) < 1 {
log.Panic( "rows error" )
}
row := rows[0]
first := res.Map( "username" )
second := res.Map( )
username,password := row.Str(first),row.Str(second)
return }

很好理解,根据adminid获取用户名和密码

5 mymysql_test.go的代码:

10
"testing"
)
func Test_getAdmin(t *testing.T) {
(username != "admin" ) {
t.Error( "getAdmin get data error" }
}<br>这里做单元测试的,测试getAdmin函数

写到这里你就可以在命令行中运行go test了

这里有个 -v参数,如果不加这个参数的话,只会显示错误的测试用例,否则就显示所有的测试用例(成功 + 错误)

6 下面做性能测试

mymysql_b_test.go的代码:

9
import (
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文件已经生成了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!