欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

研发、测试在工作中MOCK测试工具的使用

程序员文章站 2022-07-12 18:58:14
...


前言

由于在工作中经常调用到第三方的接口,然而做性能测试时,公司不给调用第三方接口进行性能测试,所以此处用到了MOCK工具,来解决性能测试中遇到的问题。


一、Mock是什么?

Mock是一个工具,主要是用于模拟一个mock服务,部署至服务器,用于满足前端开发和测试人员在工作中的需求。

二、使用步骤

1.github地址

https://github.com/dreamhead/moco

2.data.json模板使用

返回json响应信息,get请求
[
    {
        "request":{
            "uri":"/getContract",
            "method":"get"
        },
        "response":{
            "status":200,
            "headers":{
                "Content-Type":"application/json;charset=utf-8"
            },
            "json":{
                "code":200,
                "data":{
                    "signers":[
                        {
                            "docList":[
                                {
                                    "docName":"已签章文档",
                                    "docStatus":1,
                                    "docId":1294460089968697345
                                }
                            ],
                            "signStatus":3,
                            "userId":1050
                        }
                    ],
                    "code":"133",
                    "documents":[
                        {
                            "docName":"已签章文档",
                            "docId":1294460089968697345
                        }
                    ],
                    "contractId":1294460089951920129,
                    "contractName":"交易合同sxj",
                    "enterpriseId":1051,
                    "status":3
                },
                "msg":"请求成功",
                "ok":true
            }
        }
    },
    {
        "request":{
            "uri":"/getCode",
            "method":"get"
        },
        "response":{
            "status":200,
            "headers":{
                "Content-Type":"application/json;charset=utf-8"
            },
            "json":{
                "name":"张三"
            }
        }
    }
]
 POST请求以及模板使用
"template": "${req.version}"
       "template": "${req.method}"
       "template": "${req.content}"
       "template": "${req.headers['foo']}"
       "template": "${req.queries['foo']}"
       "template": "${req.forms['foo']}"
       "template": "${req.cookies['foo']}"
     {
    "request":{
        "method":"post",
        "uri":"/getUser"
    },
    "response":{
        "headers":{
            "Content-Type":"application/json;charset=utf-8"
        },
        "json":{
            "msg":"查询成功",
            "text":{
                "template":"${req.queries['name']}"
            }
        }
    }
}
 重定向data模板
 [
    {
        "request":{
            "uri":"/redirect"
        },
        "redirectTo":"http://www.baidu.com"
    }
]
设置网络延时请求
 [
    {
        "request":{
            "uri":"/mobile"
        },
        "response":{
            "latency":{
                "duration":1,
                "unit":"second"
            },
            "headers":{
                "Content-Type":"application/json;charset=utf-8"
            },
            "json":{
                "name":"张三"
            }
        }
    }
]
 网络请求参数是json形式
  [
        {
        "request":{
            "uri":"/test/webservice/dispatchPwd/getHostPassword",
            "json":{
                "token":"123456",
                "ipAddr":"192.168.19.110",
                "account":"hello1"
            },
            "method":"post"
        },
        "response":{
            "json":{
                "code":"200",
                "data":"1017B897C5CF7A90BE7CB5DE8A1D0A26:56F7A1F60D5D8E93BAC74454D0A55FE0"
            }
        }
    }
]
分模块
通过include引入其他文件,比如有多个接口,写到一个文件data.json.文件太乱了,所以使用TodoList进行分模块处理
   [ { "context": "/user", "include": "user.json" }, { "context": "/todo", "include": "todo.json" } ]
  这样,当我们访问 
http://localhost:12306/user/create 和 http://localhost:12306/todo/getAll时候, 
会跳到后面对应的json再处理一遍
 [ { "request" : { "uri" : "/create" }, "response" : { "text" : "这是创建用户请求" } } ]
//todo
[ { "request" : { "uri" : "/getAll" }, "response" : { "text" : "这是获取用户所有Todo的请求" } } ]
全局引入:
java -jar moco-runner-standalone.jar start -p 5638 -g data.json
注意:将-c 替换成-g

总结

以上就是我最近学习,并经常会用到的功能配置,如果有更好的建议,欢迎与我交流,谢谢!