什么是接口Mock测试
Mock测试定义Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象,用一个模拟的对象来创建以便测试的测试方法Mock测试应用场景测试接口中需要依赖第三方接口返回值进行逻辑处理,例如银行的支付接口模拟异常数据返回,例如需要返回特殊字符、不同长度、类型格式内容前后端开发并行工作调式,后端接口未完成时,前端调用Mock数据进行调式隔离环境,保证数据安全和正确性,对于POST、PUT、DELETE等请求进行隔离,防止修改数据出现其他未知错误
Mock常见实现的几种方式
fiddler/Charles工具MockServer-Moco自己开发Mock平台
通过fiddler
在fiddler界面----找到要mock的接口以URI:/api/v1/my/index为例,fiddler的websession界面找到下面的接口/api/v1/my/index这个接口保存接口响应数据在接口上进行右键点击,选择保存->响应->响应主体,保存到指定文件夹:my_index.json修改数据修改保存到本地的my_index.json文件,将用户名加上特殊字符。添加/api/v1/my/index到mock规则在websession面板中找到对应的请求,然后将其拖到或者选中接口点击添加到AutoResponder面板中,在RuleEditor中单击“Findafile…”,选择本地json文件的路径,点击保存。激活规则选中启用规则和请求传递,激活规则。刷新页面刷新浏览器,就可以看到效果了,后面想要修改其他的数据,只需修改本地保存的json文件即可。取消mock只需要在自动响应规则列表区域界面,取消勾选即可
Server-Moco说明
Moco是一个简单搭建模拟服务器的框架,可以模拟http、https、socket等协议基于Java开发的开源项目,Github地址:https://githucom/dreamhead/moco原理:Moco会根据一些配置,启动一个真正的HTTP服务。当发起的请求满足某个条件时,就会返回指定的响应数据,需要修改
环境搭建
下载安装:依赖JDK环境,执行电脑安装好JDK,建议安装JDK8版本Server-Moco下载地址:https://repomaveorg/maven2/com/github/dreamhead/moco-runner,选择相应版本,本次下载最新版0,下载下来就是moco-runner-0-standalonjar包
Moco使用
启动参数说明
java -jar http -p -c
java -jar http -p -g
path-to-moco-runner:jar包的路径monitor-port:http服务监听的端口configuration-file:配置文件路径
Mock单个请求
创建一个json文件,名为logijson,内容如下:
[
{
'description': '登录',
'request': {
'uri': '/login'
},
'response': {
'text':'登录成功'
}
}
]
启动Mock服务
Mock多个请求
在创建一个json文件,名为homjson,内容如下:
[
{
'description': '首页',
'request': {
'uri': '/home'
},
'response': {
'text':'进入首页'
}
}
]
创建一个请求管理配置文件,名为confijson,内容如下:
[
{'include': 'login.json'},
{'include': 'home.json'}
]
启动Mock服务
常见参数配置
请求方式,通过method参数定义
[
{
'description': '登录',
'request': {
'uri': '/login',
'method': 'post'
},
'response': {
'text': '登录成功'
}
}
]
请求参数,通过queries参数定义
[
{
'description': '登录',
'request': {
'uri': '/login',
'method': 'post',
'queries': {
'username': 'king',
'pwd': 123456
}
},
'response': {
'text': '登录成功'
}
}
]
请求头,通过headers参数定义
[
{
'description': '登录',
'request': {
'uri': '/login',
'method': 'post',
'headers': {
'appId': '4275CCE0-CE16-4BCC-9AF5-31CA133AC9AD'
}
},
'response': {
'text': '登录成功'
}
}
]
表单请求体,通过forms参数定义
[
{
'description': '登录',
'request': {
'uri': '/login',
'method': 'post',
'forms': {
'username': 'king',
'password': 123456
}
},
'response': {
'text': '登录成功'
}
}
]
JSON请求体,通过json参数定义
[
{
'description': '登录',
'request': {
'uri': '/login',
'method': 'post',
'headers': {
'Content-Type': 'application/json'
},
'json': {
'username': 'king',
'password': 123456
}
},
'response': {
'text': '登录成功'
}
}
]
HTTP响应状态码,通过status参数定义
[
{
'description': '登录',
'request': {
'uri': '/login',
'method': 'post'
},
'response': {
'status': 500,
'text': '服务器出现异常!'
}
}
]
JSON响应数据,通过json参数定义
[
{
'description': '登录',
'request': {
'uri': '/login',
'method': 'post'
},
'response': {
'headers': {
'Content-Type': 'application/json;charset=UTF-8'
},
'json': {
'code': '0',
'msg': '操作成功',
'data': {
'userID': 3175896456,
'token': '17e6ad42cff592-0dfc3f6fa02aee-c343365-1fa400-17e6ad42d00891'
}
}
}
}
]
自己开发Mock平台
略
使用Mock注意点
当把mock接口换成实际接口后,测试也必须把之前的测试重新做一遍测试完毕,上线前一定确保,为了mock而做的相关代码/配置文件的修改
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点