moco 模拟各种接口返回测试场景
本文主要介绍如何使用moco模拟测试中不容易实现的测试场景,例如:返回特定参数,接口网络延时,页面重定向等
带参数的请求
请求参数写在”queries”中
1
2
3
4
5
6
7
8
9
10 | [{
"request" : {
"uri" : "/user/getUser",
"queries": { "name":"xcqc" }
},
"response" : {
"text" : "Hey. I'm xcqc"
}
}
]
|
正则表达式
Moco支持正则匹配,请求url和请求参数都支持正则匹配
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | [{
"request" : {
"uri" : "/user/getUser",
"queries": { "name":
{
"match":"xc\\w+"
}
}
},
"response" : {
"text" : "Hey. I'm xcqc"
}
}
]
|
支持各种请求方法
moco支持POST , GET , PUT , DELETE等方法
1
2
3
4
5
6
7
8
9
10
11
12
13 | [{
"request" : {
"method" : "post",
"uri" : "/user/getUser",
"forms": { "name":"xcqc"
}
},
"response" : {
"text" : "Hey. I'm xcqc"
}
}
]
|
支持特定的头和返回状态码
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | [{
"request" : {
"method" : "post",
"headers" : {
"content-type" : "application/json"
},
"uri" : "/user/getUser"
},
"response" : {
"status":200,
"text" : "Hey. I'm xcqc"
}
}
]
|
返回参数为json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | [{
"request" : {
"method" : "post",
"headers" : {
"content-type" : "application/json"
},
"uri" : "/user/getUser"
},
"response" : {
"status":200,
"json" :
{"name":"Hey. I'm xcqc" }
}
}
]
|
页面重定向
1
2
3
4
5 | [{
"request" : { "uri" : "/redirect" },
"redirectTo" : "http://www.baidu.com"
}
]
|
网络延时
可以自定义网络延迟时间
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | [{
"request" : {
"method" : "post",
"headers" : {
"content-type" : "application/json"
},
"uri" : "/user/getUser"
},
"response" : {
"json" :
{"name":"Hey. I'm xcqc" },
"latency": {
"duration": 5,
"unit": "second"
}
}
}
]
|
支持event事件
有时我们请求一个接口时,还需要请求另一个接口才能完成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | [{
"request": {
"uri" : "/event"
},
"response": {
"text": "event"
},
"on": {
"complete": {
"get" : {
"url" : "http://www.baidu.com"
}
}
}
}
]
|
支持分模块
如果在一个测试流程中需要请求多个接口,而这些接口的moco分布在不同配置文件中,moco支持配置全局文件,只需要将需要请求的文件引入到全局文件中即可
1
2
3
4
5
6
7
8
9
10
11 | [
{
"include" : "memberlogin.json"
},
{
"include" : "confirmfree.json"
},
{
"include" : "type.json"
}
]
|
启动全局文件的命令:java -jar moco-runner-0.11.0-standalone.jar http -p 12345 -g global.json
支持请求body为xml
1
2
3
4
5
6
7
8
9
10
11
12
13 | [{
"request": {
"uri" : "/event",
"text":{
"xml":"<request><parameters><id>1</id></parameters></request>"
}
},
"response": {
"text": "event"
}
}
]
|
支持特定http版本
1
2
3
4
5
6
7
8
9
10 | [{
"request": {
"uri" : "/event",
"version":"HTTP/1.1"
},
"response": {
"text": "event"
}
}
]
|
支持请求body为json
1
2
3
4
5
6
7
8
9
10
11 | [{
"request": {
"uri" : "/event",
"json":{"foo":"bar"}
},
"response": {
"text": "event"
}
}
]
|