使用场景:
测试代码已经写好,开发代码还没写好,没有提测过来,这时候就可以使用mock来进行调试。
1、Moco框架
jar包下载地址:
https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/
2、moco的启动Demo
(1)将下载好的jar包放到工程下
(2)在工程下新建文件startup.json
[
{
"description": "这是我们的第一个mock的例子",
"request": {
"uri": "/demo"
},
"response": {
"text": "这是第一个moco框架Demo"
}
}
]
(3)在此目录下执行命令,成功
java -jar ./moco-runner-0.11.0-standalone.jar http -p 8888 -c startup1.json
在浏览器输入json文件startup1.json的目录,成功显示出。
3、Moco框架的http协议get方法Mock实现
[
{
"description": "模拟一个没有参数的get请求",
"request": {
"uri": "/getdemo",
"method": "get"
},
"response": {
"text": "这是一个没有参数的get请求"
}
},
{
"description": "模拟一个带参数的get请求",
"request":{
"uri": "/getwithparam",
"method": "get",
"queries": {
"name": "zhangsan",
"age": "11"
}
},
"response": {
"text": "张三来了!"
}
}
]
在终端执行(热部署,执行一次即可):
java -jar ./moco-runner-0.11.0-standalone.jar http -p 8888 -c startupGet.json
(1)不带参数:http://localhost:8888/getdemo
(2)带参数:http://localhost:8888/getwithparam?name=zhangsan&age=11
4、Moco框架的http协议post方法Mock实现
[
{
"description": "模拟一个post请求",
"request": {
"uri": "/postdemo",
"method": "post"
},
"response": {
"text": "这是我的第一个mock的post请求"
}
},
{
"description": "这是一个带参数的post请求",
"request": {
"uri": "/postwithparam",
"method": "post",
"forms": {
"name": "zhangsansan",
"sex": "man"
}
},
"response": {
"text": "post带参数了"
}
}
]
在jmeter里面模拟发送http请求
无参请求:
结果:
带参数:
(使用“forms”关键字,在表格中加入参数)
结果:
5、带cookies信息的get和post请求
[
{
"description": "这是一个带cookies信息的get请求",
"request": {
"uri": "/get/with/cookies",
"method": "get",
"cookies": {
"login": "true"
}
},
"response": {
"text": "这是一个携带cookies信息才能访问的配置文件"
}
},
{
"description": "这是一个带cookies信息的post请求",
"request": {
"uri": "/post/with/cookies",
"method": "post",
"cookies": {
"login": "true"
},
"json": {
"name": "zhangsan",
"age": "18"
}
},
"response": {
"status": 200,
"json": {
"zhangsan": "success",
"status": "1"
}
}
}
]
在jmeter新建一个cookies管理器
加一条cookies信息,注意补全Domain域名,和Path,不然会报错。
注意post请求参数用的“json”关键字,则用json格式,写在Body Data里面,与forms关键字不一样。
结果返回也可以用“json”格式
6、带headers信息的mock请求
[
{
"description": "这是一个带header信息的post请求",
"request": {
"uri": "/post/with/headers",
"method": "post",
"headers": {
"content-type": "application/json"
},
"json": {
"name": "wanglaosi",
"sex": "woman"
}
},
"response": {
"json": {
"wanglaosi": "success",
"status": "1"
}
}
}
]
在jmeter新建一个header管理器
添加header信息
结果
7、如何进行重定向
[
{
"description": "重定向到百度",
"request": {
"uri": "/redirect"
},
"redirectTo": "http://www.baidu.com"
}
]
输入自己的地址http://localhost:8888/redirect,打开百度的页面
也可以重定向到自己的地址
{
"description": "重定向到自己的网页上",
"request":{
"uri": "/redirect/topath"
},
"redirectTo": "/redirect/new"
},
{
"description": "这是被重定向到的请求",
"request": {
"uri": "/redirect/new"
},
"response": {
"text": "重定向成功了"
}
}
浏览器输入地址http://localhost:8888/redirect/topath,自动访问到新地址
8、总结
(1)我们可以使用mock框架来模拟接口,通过新建一个json格式的文件,写下“description”、“request”、“response”信息,通过端口命令启动服务:
java -jar ./moco-runner-0.11.0-standalone.jar http -p 8888 -c startupCookies.json
http请求,-p表示端口号,-c表示哪一个程序。此服务是热部署,只需要启动一次,直接修改测试即可。
(2)通过jmeter可以模拟发送http请求,带有cookies、header信息的,添加一个相应的管理器。
(3)在编写json时,get请求带的参数用关键字“queries”,访问时参数加在url后面,例如:“?name=zhangsan&age=18”,代表2个参数信息。post请求的参数,使用关键字“forms”,在发送请求时,在参数表格中添加参数信息;使用“json”在Data Body中添加json格式参数。