当前位置:网站首页>还不懂mock测试?一篇文章带你熟悉mock
还不懂mock测试?一篇文章带你熟悉mock
2022-07-25 22:00:00 【码同学软件测试】
Hello,大家好,今天小编给大家分享一个实现mock服务的工具moco.
那么问题来了,什么是mock服务?
Mock服务是指在测试过程中对于某些复杂(或者不太好构造)的对象,用一个虚拟的对象替代它。假如现在有A和B两个接口, A需要调用接口B才能完成业务需求。
这个时候B接口有如下三种情况:
B还没有开发完成—需要等待接口的数据来进行开发,这时候完善的接口Mock服务能大大缩短开发联调等待时间。
B的某些场景很难去模拟—比如超时、未知错误或者不稳定的第三方接口。
性能测试中隔离B接口(第三方接口)—在进行压测的时候就会遇到问题。
因为很难隔离掉其他服务和第三方接口的性能变化情况—响应时间不稳定。
那么怎么实现mock服务呢?方法有很多种,有很多开源的工具,比如,mock.js,Easy-mock,moco,fiddler/charles等,或者用flask框架直接自己去实现,这些都是可以的。今天给大家分享的moco就是众多实现mock服务工具中的一员,也是很受欢迎的一款工具,也下来详细的给大家介绍一下。
Moco这个工具依赖于java环境,所以需要提前安装jdk,它实现mock服务的原理是更改json的配置文件,主要是更改请求和响应这两个关键字里面的配置参数信息。常用的请求和响应的配置参数信息如下所示:


Moco的jar包的下载地址如下:
http://navo.top/UFV7fi

github的地址:
http://navo.top/uyABbu
启动命令:
java -jar moco-runner--standalone.jar start -p 端口号 -c xxx.json
备注: xxx.json需要我们自己去配置,根据配置request和response来mock一个接口服务,这样我们就可以访问定义的request来获取到对应自定义的response了。
下面的所有情况,你都首先要开启mock服务,我把所有的配置信息都放在mock.json这个文件中,所以启动命令为java -jar moco-runner-1.1.0-standalone.jar start -p 10086 -c mock.json,
启动服务成功之后,再用postman访问接口,查看效果。
接下来给大家详细的列出常用的几种场景应该如何去写json脚本。
第一种情况,请求方法为get的接口。
下面的json脚本是我定义了一个请求方法是get请求,url地址是/get,请求参数是id='12306’和name='moco’响应值是{“text”:“moco get”}的mock接口
[
{
"request":
{
"method":"get",
"uri":"/get",
"queries":
{
"id":"12306",
"name":"moco"
}
},
"response":
{
"text":"moco get"
}
}
]
接下来我们用postman来测试一下我们的mock接口

第二种情况,请求方法为post的接口。
2.1 请求参数为forms表单
下面的json脚本是请求方法为post,请求url地址为/post,请求参数是forms表单,响应值是{“text”:“bar”}的mock接口
{
"request" :
{
"method" : "post",
"uri": "/post",
"forms" :
{
"name" : "foo"
}
},
"response" :
{
"text" : "bar"
}
}
接下来我们用postman来测试一下我们的mock接口

2.2 请求参数为json
下面的json脚本是请求方法为post,请求url地址为/json,请求参数是json,响应值是{“text”:“bar”}的mock接口
[
{
"request": {
"method" : "post",
"uri": "/json",
"json": {
"foo": "bar"
}
},
"response": {
"text": "foo"
}
}
]
接下来我们用postman来测试一下我们的mock接口

2.3 请求的参数为保存在json文件中的json数据,有一个your_file.json这样的文件,内容如下

定义配置信息的json脚本是请求方法为post,请求url地址为/json,请求参数是存放在your_file.json中的json数据,响应值是{“text”:“ok”}的mock接口。
[
{
"request":
{
"method" : "post",
"uri": "/json",
"file":
{
"json": "your_file.json"
}
},
"response":
{
"text": "ok"
}
}
]
接下来我们用postman来测试一下我们的mock接口

2.4 携带header和cookie的请求
定义配置信息的json脚本是请求方法为post,请求url地址为/json,请求参数是存放在your_file.json中的json数据,响应值是{“text”:“ok”}的mock接口(以下数据的#后面的内容只是为了说明,启动服务的时候要把#及后面的信息删除)
[
{
"description":"这是一个带cookies和headers的Post请求",# 接口的描述信息
"request":{
"uri":"/postDemoWithCookies", # 定义url地址
"cookies":{
# 定义cookies值
"login":"true"
},
"headers": {
# 定义headers的值
"content-type": "application/json"
},
"json":{
# 定义json的请求参数
"name":"hi",
"age":"3"
}
},
"response":{
"status":"200", # 定义响应状态码
"json":{
# 定义响应值为json的数据
"name":"success",
"status":"1"
}
}
}
]
接下来我们用postman来测试一下我们的mock接口
cookie和header的信息如下所示:

请求参数如下所示:

2.5 为重定向的请求
定义配置信息的json脚本是请求方法为get,请求url地址为/redirect,redirectTo这个字段后面定义重定向的地址(以下数据的#后面的内容只是为了说明,启动服务的时候要把#及后面的信息删除)
``json
[
{
“description”:“重定向到百度”,
“request”:{
“uri”:“/redirect”,
“method”:“get”
},
“redirectTo”:“http://www.baidu.com” # 重定向到百度
}
]
接下来我们用postman来测试一下我们的mock接口

moco这个mock工具今天就分享到这里了,大家觉得好用不?
边栏推荐
- 这次龙蜥展区玩的新花样,看看是谁的 DNA 动了?
- EL表达式改进JSP
- 新版Maixhub部署(V831与K210)
- Uninstall NPM and install NPM_ Use 'NPM uninstall' to uninstall the NPM package 'recommended collection'
- 立创EDA——器件的创建01-电阻(二)
- 测试工作不受重视,你换位思考了吗?
- What are the application characteristics of NTU general database gbase Bi?
- 【饭谈】Web3.0到来后,测试人员该何去何从?(十条预言和建议)
- 若依如何解决导出使用下载插件出现异常?
- GPON introduction and Huawei OLT gateway registration and configuration process
猜你喜欢

Lichuang EDA -- creation of devices 01 resistance (II)

2022 the latest software tests eight part essay. Whether you can offer depends on how you recite it
![[go basics 02] the first procedure](/img/af/f32762a828f384bf6aa063ebf959aa.png)
[go basics 02] the first procedure

GPON introduction and Huawei OLT gateway registration and configuration process

2022 love analysis ― bank digitalization practice report

Redis 使用详解

Children's programming electronic society graphical programming level examination scratch level 1 real problem analysis (judgment question) June 2022

Sofa weekly | open source person - Niu Xuewei, QA this week, contributor this week
![[assembly language 01] basic knowledge](/img/df/d586288b8f41211141bc4e2bca20cf.png)
[assembly language 01] basic knowledge

Solutions to the failure of win key in ikbc keyboard
随机推荐
Ijcai2022 meeting! Microsoft and other tutorials on domain generalization
立创EDA——器件的创建01-电阻(二)
成为比开发硬气的测试人,我都经历了什么?
The technical aspects of ByteDance are all over, but the result is still brushed. Ask HR why...
What is redis? Briefly describe its advantages and disadvantages
Jmeter--- set proxy recording request
Mouseevent event -- mouse coordinate description -- Focus event -- input event -- throttle -- mousewheel (wheel event)
Special class design
选择的能力
Come again
How to solve the problem of using the download Plug-in for export?
jsp九大内置对象
C语言:随机生成数+选择排序
JS timer and swiper plug-in
Redis memory elimination mechanism?
sql语句练习题整理
【饭谈】测试平台为什么有组件化?模块化?很多看不到的地方设计的很好是种浪费么?
【饭谈】软件测试薪资层次和分段(修仙)
GPON introduction and Huawei OLT gateway registration and configuration process
【饭谈】如何设计好一款测试平台?