软件测试相关-mock篇
在线mock:https://www.mocky.io
相关字段描述:
1、description:字段作为注释,用于接口描述
2、response:请求响应信息,所有响应内容全部写在该位置下方
2.1、text:返回内容
2.2、status:状态码的返回
2.3、headers:在 response 中指定 HTTP Header
2.4、proxy:指定响应的url是什么网址
2.5、redirectTo:重定向跳转
2.6、Cookie:在响应中添加cookie
2.7、json:返回json格式的数据
2.8、file:返回指定文件内容
3、内置变量:Moco内置了一些变量,在response中可以使用这些变量,让反馈更加智能,以下列举了常用的变量
- req.version
- req.method
- req.content
- req.headers
- req.queries
- req.forms
- req.cookies
Demo:
1 [ 2 { 3 "request":{ 4 "uri": "/template", 5 "forms": { 6 "name": "zhangsan", 7 "age": "12" 8 } 9 }, 10 "response": { 11 "text": { 12 "template": "${req.forms['age']}" 13 } 14 } 15 } 16 ]
4、request:请求数据
4.1、uri:接口地址
4.2、queries:请求参数
4.3、method:请求方式
4.4、headers:头信息,例如:content-type:application/json
4.5、cookie:设置cookies信息
4.6、forms:设置表单参数
4.7、xml:设置以xml作为请求参数的body
也可以以文件的形式返回xml:文件需要与Jar包在同一目录下
4.8、json:以json做为请求的body
4.9、match:可以使用正则表达式匹配到请求
Demo1:(使用全局配置文件,指定不同路径)
1)目录说明:
1、单独新建一个mock目录
2、在mock目录新建request和response目录
3、将moco-runner-0.11.0-standalone.jar放入mock目录下
4、在mock目录下新建configs.json文件
2)目录结构截图:
3)文件内容如下:
1 configs.json 2 [ 3 { "context": "/path1", "include": "request/get.json" }, 4 { "context": "/path2", "include": "request/post.json" } 5 ] 6 7 get.json 相当于两个请求,地址一样,但是传参不同,得到的结果不同 8 [ 9 { 10 "request":{ 11 "method":"get", 12 "uri":"/getTest", 13 "queries":{ 14 "param1":"1", 15 "param2":"2" 16 } 17 }, 18 "response":{ 19 "file": "response/success.json" 20 } 21 }, 22 { 23 "request":{ 24 "method":"get", 25 "uri":"/getTest" 26 }, 27 "response":{ 28 "file":"response/fail.json" 29 } 30 } 31 ] 32 33 post.json 34 [ 35 { 36 "request":{ 37 "method":"post", 38 "uri":"/postMethod", 39 "headers":{ 40 "Content-Type":"application/json" 41 }, 42 "json":{ 43 "name":"zhangsan", 44 "password":"123456" 45 } 46 }, 47 "response":{ 48 "file":"response/success.json" 49 } 50 }, 51 { 52 "request":{ 53 "method":"post", 54 "uri":"/postMethod" 55 }, 56 "response":{ 57 "text":"default" 58 } 59 } 60 ] 61 62 fail.json 63 { 64 "status":"fail", 65 "status_code":"001", 66 "error_message":"信息错误", 67 "data":{} 68 } 69 70 success.json 71 { 72 "status":"succ", 73 "status_code":"100", 74 "error_message":"请求成功", 75 "data": { 76 "name":"张三", 77 "password":12345 78 } 79 }
4)在命令行模式进入到mock目录,并执行如下命令:
java -jar moco-runner-0.11.0-standalone.jar http -p 8999 -g configs.json
注意:
1、-p指定服务端口,注意不要重复
2、-g 指定全局配置文件,注意配置文件和Jar包同级目录则直接指定配置文件即可,否则可以使用相对路径
5)测试:
特别注意:此处访问接口的路径中指定了path1,是因为全局配置文件中指定了context,所有在访问指定接口需要添加context指定的值
get:测试无参数场景,返回内容即response中指定文件中的内容
get:测试有参数场景
post:测试无参数场景,无参数返回指定的文本信息default
post:测试有参数场景,注意header需要与post.json文件中请求中的header保持一致,不然访问不通