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