-
-
-
-
Java自动化测试三(moco框架使用)
moco框架
moco框架介绍
mock用来模拟接口的,本次学习mock用的是moco框架,moco框架是github上的一个开源项目,可以模拟一些http,https,Socket协议
moco下载地址:moco下载地址
- 我们选择
moco-runner/
选择版本号-->0.12.0/
选择moco的jar文件(一般是最大的那个)-->moco-runner-0.12.0-standalone.jar
Maven框架的依赖地址:
<!-- https://mvnrepository.com/artifact/com.github.dreamhead/moco-runner --> <dependency> <groupId>com.github.dreamhead</groupId> <artifactId>moco-runner</artifactId> <version>0.12.0</version> </dependency>
- 我们选择
我们的第一个Demo
- 我们先随便创建一个文件夹,目前用不用idea都可以
- 把我们刚才下载的Demo创建到目录下
- 创建我们的启动配置文件json
打开我们的命令行操作界面,然后进入我们的文件根目录下,执行命令:
java -jar moco-runner-0.12.0-standalone.jar http -p 8888 -c 配置的json文件
命令详解:
java -jar
是启动jar文件的标准启动命令,如果失败,可能是电脑的jdk环境变量问题,请自行百度进行检查是否正确- 参数:
http
表示我们请求的方式 - 参数:
-p 8888
是指我们的启动端口参数,后面紧跟要启动的端口号 - 参数:
-c json配置文件
此参数主要指定我们的配置文件,可以使用绝对路径或者强制路径去指定我们的额moco的配置文件的位置
配置我们的json文件,如果复制过去,一定要删除注释
[ { "description": "这个是我们第一个的mock例子", "request": { "uri": "/demo" }, "response": { "text": "I name is mock", "headers": { "Content-Type": "text/html;charset=gbk" } } } ]
- 在浏览器输入:
http://localhost:8888/demo
或者http://127.0.0.1:8888/demo
Moco框架的http协议的get方法的Mock实现
照例我们呢还是创建一个json文件
[ { "description": "这个是我们第一个没有参数get请求", "request": { "uri": "/getDemo", "method": "get" }, "response": { "text": "这是我们第一个没有参数的get请求", "headers": { "Content-Type": "text/html;charset=gbk" } } }, { "description": "模拟一个带参数的get请求", "request": { "uri": "/getWithParam", "method": "get", "queries": { "name": "胡汉三", "age": "18" } }, "response": { "text": "我胡汉三又回来了!!!", "headers": { "Content-Type": "text/html;charset=gbk" } } } ]
- 然后启动我们的moco
- 访问对应的路径返回我们的参数
Moco框架的http协议的post方法的Mock实现
这次我们依然是创建一个json文件
- 这里有一个问题一定要注意!注意!!注意!!!
- 那就是我们post请求的参数一定不能使用get带参请求的
queries
去请求,否则会报400参数不合法 - 我们可以先使用
forms
去请求,也就是我们的基本的form表单数据类型
[ { "description": "模拟一个post请求", "request": { "uri": "/postDemo", "method": "post" }, "response": { "text": "这个是我们第一个mock的post请求", "headers": { "Content-Type": "text/html;charset=gbk" } } }, { "description": "这个是我们一个带参数的post请求", "request": { "uri": "/postWithParam", "method": "post", "forms": { "name": "胡汉三", "age": "18", "sex": "man" } }, "response": { "text": "我胡汉三带着参数来了!!!", "headers": { "Content-Type": "text/html;charset=gbk" } } } ]
- 然后换文件启动moco
- 然后我们要换工具请求了,浏览器已经满足不了我们了,我们使用Postman
!
我们如何在Moco框架中增加Cookies
在Moco框架中携带Cookies发送get请求
增加json文件
[ { "description": "这是一个带cookies信息的get请求", "request": { "uri": "/getDemo/Cookies", "method": "get", "cookies": { "login": "true" } }, "response": { "text": "这个是一个必须带cookies信息才可以访问的get请求", "headers": { "Content-Type": "text/html;charset=gbk" } } } ]
- 使用Postman发送请求并添加cookies信息
在Moco框架中携带Cookies发送post请求
添加一个json文件
[ { "description": "这是一个带cookies信息的get请求", "request": { "uri": "/getDemo/Cookies", "method": "get", "cookies": { "login": "true" } }, "response": { "text": "这个是一个必须带cookies信息才可以访问的get请求", "headers": { "Content-Type": "text/html;charset=gbk" } } }, { "description": "这是一个带cookies信息的post请求", "request": { "uri": "/postDemo/Cookies", "method": "post", "cookies": { "login": "true" }, "json": { "name": "胡汉三", "sex": "man" } }, "response": { "status": 200, "json": { "code": "success", "msg": "胡汉三,请求成功了" } } } ]
- 使用Postman发送请求,并添加cookies信息,添加json数据
- 此时我们一定要注意,我们的请求中有中文,一定要设置编码,编码格式要和我们的json文件的格式保持一致
- 由此可以得出结论,我们的请求格式归根结底第受限于我们json文件的编码格式
- 我们可以在Postman中的henders中对
Content-Type
的值设置为:application/json;charset=utf8
!
带有Header信息的请求
创建json文件
[ { "description": "这个是一个带header信息的post请求", "request": { "uri": "/postHeader", "method": "post", "headers": { "content-type": "application/json;charset=utf8" }, "json": { "name": "李四", "sex": "女" } }, "response": { "json": { "code": "success", "msg": "李四,请求成功了" } } } ]
- 使用postman发送请求
实现请求重定向
Demo01
创建json文件,我们重定向到百度
[ { "description": "这个是一个重定向到百度的demo", "request": { "uri": "/redirect" }, "redirectTo": "http://www.baidu.com" } ]
- 使用浏览器进行验证
Demo2
创建json文件
[ { "description": "重定向到自己的一个网页", "request": { "uri": "/redirect/toPath" }, "redirectTo": "/redirect/new" }, { "description": "这个是被上面重定向的请求", "request": { "uri": "/redirect/new" }, "response": { "text": "重定向成功了", "headers": { "Content-Type": "text/html;charset=gbk" } } } ]
- 使用浏览器访问
- 使用postman访问