接口测试
This commit is contained in:
parent
7bb8f8254a
commit
c87bca9004
@ -35,6 +35,7 @@ func init() {
|
|||||||
var account = flag.String("account", "", "登录账号")
|
var account = flag.String("account", "", "登录账号")
|
||||||
var sid = flag.Int32("sid", 0, "区服ID")
|
var sid = flag.Int32("sid", 0, "区服ID")
|
||||||
var create = flag.Bool("create", false, "是否创建新账号") //false 不创建新账号
|
var create = flag.Bool("create", false, "是否创建新账号") //false 不创建新账号
|
||||||
|
var role = flag.Bool("role", false, "创角")
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
Execute()
|
Execute()
|
||||||
@ -49,6 +50,7 @@ var runCmd = &cobra.Command{
|
|||||||
opts.Create = *create
|
opts.Create = *create
|
||||||
opts.Account = *account
|
opts.Account = *account
|
||||||
opts.ServerId = *sid
|
opts.ServerId = *sid
|
||||||
|
opts.Role = *role
|
||||||
r := robot.NewRobot(opts)
|
r := robot.NewRobot(opts)
|
||||||
r.Run()
|
r.Run()
|
||||||
},
|
},
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
package robot
|
|
||||||
|
|
||||||
import (
|
|
||||||
"go_dreamfactory/comm"
|
|
||||||
"go_dreamfactory/modules/user"
|
|
||||||
"go_dreamfactory/pb"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
addResBuilders = []*TestCase{
|
|
||||||
{
|
|
||||||
desc: "添加资源",
|
|
||||||
mainType: string(comm.ModuleUser),
|
|
||||||
subType: user.UserSubTypeAddRes,
|
|
||||||
req: &pb.UserAddResReq{
|
|
||||||
Res: &pb.UserAssets{
|
|
||||||
A: "item",
|
|
||||||
T: "10001",
|
|
||||||
N: 1000,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
rsp: &pb.UserAddResResp{},
|
|
||||||
enabled: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
desc: "添加资源2",
|
|
||||||
mainType: string(comm.ModuleUser),
|
|
||||||
subType: user.UserSubTypeAddRes,
|
|
||||||
req: &pb.UserAddResReq{
|
|
||||||
Res: &pb.UserAssets{
|
|
||||||
A: "item",
|
|
||||||
T: "10011",
|
|
||||||
N: 1000,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
rsp: &pb.UserAddResResp{},
|
|
||||||
enabled: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func (r *Robot) RunAddRes() {
|
|
||||||
r.addBuilders(addResBuilders)
|
|
||||||
}
|
|
@ -91,7 +91,7 @@ var (
|
|||||||
enabled: true,
|
enabled: true,
|
||||||
}
|
}
|
||||||
tcs = append(tcs, tc)
|
tcs = append(tcs, tc)
|
||||||
robot.addTestCaseAndReq(tcs) //这里一定要调用此方法才会发送请求
|
robot.addBuilders(tcs) //这里一定要调用此方法才会发送请求
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
@ -54,12 +54,12 @@ var (
|
|||||||
enabled: true,
|
enabled: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
robot.addTestCaseAndReq(tcs)
|
robot.addBuilders(tcs)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
tcs = append(tcs, tc)
|
tcs = append(tcs, tc)
|
||||||
}
|
}
|
||||||
robot.addTestCaseAndReq(tcs) //这里一定要调用此方法才会发送请求
|
robot.addBuilders(tcs) //这里一定要调用此方法才会发送请求
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
@ -61,7 +61,7 @@ func (r *Robot) AccountLogin() {
|
|||||||
NickName: nick,
|
NickName: nick,
|
||||||
},
|
},
|
||||||
rsp: &pb.UserCreateResp{},
|
rsp: &pb.UserCreateResp{},
|
||||||
// enabled: r.enable,
|
enabled: r.enable,
|
||||||
}
|
}
|
||||||
tcs = append(tcs, tc)
|
tcs = append(tcs, tc)
|
||||||
r.addBuilders(tcs)
|
r.addBuilders(tcs)
|
||||||
|
@ -7,6 +7,7 @@ type Options struct {
|
|||||||
Create bool
|
Create bool
|
||||||
Secretkey string //秘钥串
|
Secretkey string //秘钥串
|
||||||
ServerId int32 //区服ID
|
ServerId int32 //区服ID
|
||||||
|
Role bool //是否创角
|
||||||
}
|
}
|
||||||
|
|
||||||
func DefaultOpts() *Options {
|
func DefaultOpts() *Options {
|
||||||
|
@ -13,7 +13,7 @@ var pack_builders = []*TestCase{
|
|||||||
subType: "queryuserpackreq",
|
subType: "queryuserpackreq",
|
||||||
// req: &pb.Pack_Getlist_Req{IType: 1},
|
// req: &pb.Pack_Getlist_Req{IType: 1},
|
||||||
rsp: &pb.UserCreateResp{},
|
rsp: &pb.UserCreateResp{},
|
||||||
enabled: true,
|
// enabled: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,20 +89,21 @@ func (r *Robot) Run() {
|
|||||||
if r.opts.Account == "" {
|
if r.opts.Account == "" {
|
||||||
zlog.Fatal("WARNNING: account is required !!!")
|
zlog.Fatal("WARNNING: account is required !!!")
|
||||||
}
|
}
|
||||||
|
r.enable = r.opts.Role
|
||||||
r.AccountLogin()
|
r.AccountLogin()
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
// go func() {
|
||||||
for {
|
// for {
|
||||||
r.handleRsp()
|
// r.handleRsp()
|
||||||
}
|
// }
|
||||||
}()
|
// }()
|
||||||
|
|
||||||
ticker := time.NewTicker(time.Second * 65)
|
ticker := time.NewTicker(time.Second * 5)
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
select {
|
r.printBuilders()
|
||||||
case <-ticker.C:
|
<-ticker.C
|
||||||
if len(r.builderMap) == 0 {
|
if len(r.builderMap) == 0 {
|
||||||
r.printReport(&TestReport{
|
r.printReport(&TestReport{
|
||||||
caseTotal: r.caseTotal,
|
caseTotal: r.caseTotal,
|
||||||
@ -112,7 +113,6 @@ func (r *Robot) Run() {
|
|||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
select {}
|
select {}
|
||||||
@ -149,13 +149,20 @@ func (r *Robot) addBuilders(builders []*TestCase) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *Robot) printBuilders() {
|
||||||
|
for k, v := range r.builderMap {
|
||||||
|
zlog.Debugf("%v %s.%s", k, v.mainType, v.subType)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//处理用例,发送请求
|
//处理用例,发送请求
|
||||||
func (r *Robot) handleReq() {
|
func (r *Robot) handleReq() {
|
||||||
go func() {
|
// go func() {
|
||||||
|
for len(r.builderMap) > 0 {
|
||||||
for _, b := range r.builderMap {
|
for _, b := range r.builderMap {
|
||||||
if b.enabled && b.req != nil && !b.requested {
|
if b.enabled && b.req != nil && !b.requested {
|
||||||
time.Sleep(time.Millisecond * 500)
|
time.Sleep(time.Millisecond * 500)
|
||||||
r.reqCh <- b.id
|
// r.reqCh <- b.id
|
||||||
b.start = time.Now()
|
b.start = time.Now()
|
||||||
r.start = time.Now()
|
r.start = time.Now()
|
||||||
head := &pb.UserMessage{MainType: b.mainType, SubType: b.subType}
|
head := &pb.UserMessage{MainType: b.mainType, SubType: b.subType}
|
||||||
@ -166,9 +173,12 @@ func (r *Robot) handleReq() {
|
|||||||
zlog.Errorf("send to client err:%v", err)
|
zlog.Errorf("send to client err:%v", err)
|
||||||
}
|
}
|
||||||
b.requested = true
|
b.requested = true
|
||||||
|
|
||||||
|
r.handleRsp(b.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}
|
||||||
|
// }()
|
||||||
}
|
}
|
||||||
|
|
||||||
//加入用例并执行请求
|
//加入用例并执行请求
|
||||||
@ -196,12 +206,11 @@ func (r *Robot) handleNotify(uuid string, msg *pb.UserMessage) {
|
|||||||
|
|
||||||
r.printReply(msg, tc)
|
r.printReply(msg, tc)
|
||||||
delete(r.builderMap, uuid)
|
delete(r.builderMap, uuid)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//处理响应
|
//处理响应
|
||||||
func (r *Robot) handleRsp() {
|
func (r *Robot) handleRsp(id string) {
|
||||||
defer func() {
|
defer func() {
|
||||||
r.caseTotal++
|
r.caseTotal++
|
||||||
}()
|
}()
|
||||||
@ -215,14 +224,19 @@ func (r *Robot) handleRsp() {
|
|||||||
zlog.Fatalf("unmarshal err:%v", err)
|
zlog.Fatalf("unmarshal err:%v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
uuid := <-r.reqCh
|
uuid, _ := r.findTestCase(msg)
|
||||||
|
if uuid == "" {
|
||||||
|
uuid = id
|
||||||
|
}
|
||||||
|
|
||||||
if v, ok := r.builderMap[uuid]; ok {
|
// uuid := <-r.reqCh
|
||||||
r.handleNotify(uuid, msg)
|
r.handleNotify(uuid, msg)
|
||||||
if v.enabled &&
|
if v, ok := r.builderMap[uuid]; ok {
|
||||||
(msg.MainType == v.mainType &&
|
|
||||||
msg.SubType == v.subType) &&
|
// if v.enabled &&
|
||||||
v.requested {
|
// (msg.MainType == v.mainType &&
|
||||||
|
// msg.SubType == v.subType) &&
|
||||||
|
// v.requested {
|
||||||
|
|
||||||
v.hs = time.Since(v.start)
|
v.hs = time.Since(v.start)
|
||||||
if !comm.ProtoUnmarshal(msg, v.rsp) {
|
if !comm.ProtoUnmarshal(msg, v.rsp) {
|
||||||
@ -230,7 +244,6 @@ func (r *Robot) handleRsp() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//处理下一层用例
|
//处理下一层用例
|
||||||
// r.goNext(v)
|
|
||||||
if v.next != nil {
|
if v.next != nil {
|
||||||
v.next(r, v.rsp)
|
v.next(r, v.rsp)
|
||||||
}
|
}
|
||||||
@ -253,7 +266,16 @@ func (r *Robot) handleRsp() {
|
|||||||
}
|
}
|
||||||
r.caseSuccess++
|
r.caseSuccess++
|
||||||
}
|
}
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *Robot) findTestCase(msg *pb.UserMessage) (string, bool) {
|
||||||
|
for k, v := range r.builderMap {
|
||||||
|
if v.mainType == msg.MainType && v.subType == msg.SubType {
|
||||||
|
return k, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "", false
|
||||||
}
|
}
|
||||||
|
|
||||||
//登录回调
|
//登录回调
|
||||||
@ -439,7 +461,6 @@ func (r *Robot) onUserLoaded() {
|
|||||||
//user
|
//user
|
||||||
r.RunUser()
|
r.RunUser()
|
||||||
|
|
||||||
r.RunAddRes()
|
|
||||||
//hero
|
//hero
|
||||||
r.RunHero()
|
r.RunHero()
|
||||||
//friend
|
//friend
|
||||||
|
@ -17,16 +17,16 @@ var user_builders = []*TestCase{
|
|||||||
NickName: "乐谷70616",
|
NickName: "乐谷70616",
|
||||||
},
|
},
|
||||||
rsp: &pb.UserCreateResp{},
|
rsp: &pb.UserCreateResp{},
|
||||||
enabled: true,
|
// enabled: true,
|
||||||
}, {
|
}, {
|
||||||
desc: "添加资源",
|
desc: "添加资源",
|
||||||
mainType: string(comm.ModuleUser),
|
mainType: string(comm.ModuleUser),
|
||||||
subType: user.UserSubTypeAddRes,
|
subType: "addres",
|
||||||
req: &pb.UserAddResReq{ //设置请求参数
|
req: &pb.UserAddResReq{
|
||||||
Res: &pb.UserAssets{
|
Res: &pb.UserAssets{
|
||||||
A: comm.ResGold,
|
A: "item",
|
||||||
T: "",
|
T: "10011",
|
||||||
N: 100,
|
N: 999,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
rsp: &pb.UserAddResResp{},
|
rsp: &pb.UserAddResResp{},
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
cfg "go_dreamfactory/sys/configure/structs"
|
cfg "go_dreamfactory/sys/configure/structs"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/spf13/cast"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
"google.golang.org/protobuf/types/known/anypb"
|
"google.golang.org/protobuf/types/known/anypb"
|
||||||
)
|
)
|
||||||
@ -224,7 +225,8 @@ func (this *ModuleBase) DispenseRes(uid string, res []*cfg.Game_atn, bPush bool)
|
|||||||
code = this.ModuleUser.AddAttributeValue(uid, v.T, v.N, bPush)
|
code = this.ModuleUser.AddAttributeValue(uid, v.T, v.N, bPush)
|
||||||
|
|
||||||
} else if v.A == comm.ItemType { //道具资源
|
} else if v.A == comm.ItemType { //道具资源
|
||||||
resID, _ = strconv.Atoi(v.T)
|
resID = cast.ToInt(v.T)
|
||||||
|
// resID, _ = strconv.Atoi(v.T)
|
||||||
code = this.ModuleItems.AddItem(source, uid, int32(resID), v.N, bPush)
|
code = this.ModuleItems.AddItem(source, uid, int32(resID), v.N, bPush)
|
||||||
} else if v.A == comm.HeroType { //卡片资源
|
} else if v.A == comm.HeroType { //卡片资源
|
||||||
resID, _ = strconv.Atoi(v.T)
|
resID, _ = strconv.Atoi(v.T)
|
||||||
|
Loading…
Reference in New Issue
Block a user