Moco测试知多少?
什么是mock?
Mock就是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来替代它,帮助我们测试这种场景。
一般前端工程师会在后端工程师还没有完成后台接口开发的时候,自己根据事先约定好的api文档自己mock一个接口,用来调试他的前端页面。
这里的mock我们就可以理解为创建了一个虚拟的接口。
我们测试人员在测试的时候,有时候遇到需要第三方接口返回特定数据以符合特定的测试场景,这种情况需要和第三方厂商进行沟通,联调测试,效率低成本高,此时我们就可以利用mock的方式,自己创建一个虚拟的第三方接口返回,来代替。
不光是第三方接口,有时候测试一些异常场景的前端展示,也可以用mock的方式快速模拟出这种场景.
在自动化测试的场景,我们也会遇到因为依赖的第三方接口不稳定,而导致自动化测试用例执行失败,影响了我们自动化测试用例的执行效率,我们同样可以把这些依赖的接口用mock来代替,增强自动化测试的稳定性。
下载moco
Moco是一个简单易用的mock工具,可以通过简单的配置request和response 对象,达到模拟请求效果。
我们可以直接去github上获取moco的jar包
https://github.com/dreamhead/moco
这里展示了关于moco的介绍和源码,我们可以点击箭头处直接下载它的jar包

配置json文件
我们需要先编辑一个json文件,用来定义不同的请求得到的不同返回值.
新建一个文件,格式改为json.然后打开这个文件进行编辑.如图:

其中description代表的是注释,里面内容可以填一些这个请求相关的注释内容,帮助增加这个json文件的可读性,uri就是我们这个接口的统一资源标识符,可以根据你想摸你的接口自定义,下面的response里的内容代表了返回的值
此时我们编辑好了一个简单的mock文件,我们来看看效果。
启动moco
首先把我们下载下来的moco的jar包和刚刚编辑好的json文件放到同一个文件夹路径下,如图:

然后在该路径下打开cmd命令行

在该路径下,输入cmd,按回车,弹出命令行.
输入命令:java -jar moco-runner-1.1.0-standalone.jar http -p 8888 -c test.json
其中jar包的名称你们根据自己下载的jar包版本来写,后面的http代表这个模拟的是http请求,-p 8888 定义是端口号,-c test.json 写的是我们编辑的那个json文件名,根据你们自己编辑的文件名称来写。
执行命名后,如图:

此时我们mock的服务以及启动成功了,相当于在我们本地的8888端口上启动的,所以我们可以通过浏览器访问一下localhost:8888/demo 来看看返回的结果,注意,这里/demo就是我们在json文件中定义的uri。

如图,我们访问后得到了json文件中编辑的返回值。
以上我们就完成了用moco来帮助我们生成mock。
同一个请求不同的入参mock不同的返回值
刚刚我们的请求是一个get请求,且不带任何参数,如果我们想mock
多种情况的话,就可以在json文件中编辑多种情况的请求,格式如图:

图中我们给了这个请求2中入参的情况,分别返回2种值,我们可以使用postman来试下,或者直接在浏览器打开,如图:


当请求入参分别为123和444的时候,返回的值不同。
如果你修改一个你没有配置的入参,此时请求就会报错,如图:

配置不同的请求类型
刚刚我们试的都是get请求,我们可以通过在文件中配置请求类型来生成一个post类型的请求,如图:

如图我们是在request中加入了method参数,把它的值设置为post,然后增加了form的入参,在其中添加我们这个请求的入参,我在这里设置了2种入参的请求,分别对应的返回值也不同,分别为当param1=test1和test2的情况,我们来试试看。
由于post类型的请求我们不能直接用浏览器来发起,这里我们可以借用接口测试工具,发送请求,我这里用了postman,发送请求如图:


如图所示分别为test1和test’2的返回情况,说明我们的post请求mock也完成了。
总结
Moco还可以通过在json文件中添加cookies,header,重定向这些参数,来模拟各种情况下的请求和返回值,大家可以根据自己工作的需求去对这些东西进行了解。
Moco是热更新的,所以当你启动了jar包的服务之后,即使此时修改了json文件中的内容,你也不需要重启服务,就可以生效了。
掌握了mock测试的技术,可以让我们在开发没有完成对应接口的时候,有接口文档就提前进入到测试状态,是现在敏捷模式下不可或缺的技术,也是持续集成中一个重要的组成部分。
Moco测试知多少?的更多相关文章
- appium 自动化测试之知乎Android客户端
appium是一个开源框架,相对来说还不算很稳定.转载请注明出处!!!! 前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecraz ...
- json处理三部曲之第三曲:利用Gson处理json
需要导入gson-xxx.jar包 <dependency> <groupId>com.google.code.gson</groupId> <artifac ...
- 一个appium 博客
http://www.cnblogs.com/tobecrazy/category/699177.html appium Java控制Appium server start/stop 摘要: 相信很多 ...
- CSS渐变字体、镂空字体、input框提示信息颜色、给图片加上内阴影、3/4圆
1.渐变字体 主要是看:-webkit-background-clip: text; 该属性 <style> .b1{ width: 500px; height: 200px; font- ...
- mongodb 3.2.x 启动 Warning 错误处理
[root@restore1 data1]# mongod --dbpath=/data/data1/mongodb_data/ --directoryperdb ** WARNING: You ar ...
- MySQL使用可重复读作为默认隔离级别的原因
一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle.SQL Server等,而MySQL却使用可重复读(Read-Repeatable,RR). ...
- 腾讯优图及知脸(ZKface)人脸比对接口测试(python)
一.腾讯优图 1.开发者地址:http://open.youtu.qq.com/welcome/developer 2.接入流程:按照开发者页面的接入流程接入之后,创建应用即可获得所需的AppID.S ...
- 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_17-异常处理-可预知异常处理-异常处理测试
ResultCode有很多的实现类 cmsCode有很多类型的错误异常 pgeService内当CmsPage这个对象为空的时候,异常类型就可以抛出CmsCode里面的错误代码 if(cmsPage1 ...
- 测试脚本配置、ORM必知必会13条、双下划线查询、一对多外键关系、多对多外键关系、多表查询
测试脚本配置 ''' 当你只是想测试django中的某一个文件内容 那么你可以不用书写前后端交互的形式而是直接写一个测试脚本即可 脚本代码无论是写在应用下的test.py还是单独开设py文件都可以 ' ...
随机推荐
- vue-cli中的index.html ,main.js , App.vue的关系
###发现不少小伙伴才刚开始接触到这个结构都被绕的迷糊,而发现很多人说的也不是那么准确,那么下面我来说一下是怎么回事### 1.首先我们来看看原生Vue中组件的写法, 我们按照vue-cli的结构按照 ...
- 了解Lombok插件
Lombok是什么 Lombok可以通过注解形式帮助开发人员解决POJO冗长问题,帮助构造简洁和规范的代码,通过注解可产生相应的方法. Lombok如何在IDEA中使用 我们都知道,使用一种工具,一定 ...
- [Firefox附加组件]0001.入门
Firefox 火狐浏览器,拥有最快.最安全的上网体验,并且火狐拥有超过一万个的 扩展(add-ons),提供各种不同的扩展功能,您可以简单的下载.安装这些扩展以增强您的火狐功能,帮助您更好.更个性化 ...
- [JavaWeb基础] 012.Struts2 自定义标签使用
在做开发中,我们会把一些比较经常使用到的代码封装起来,这样可以加快开发的速度和减少错误,并且在修改bug可以一次修改多次修复.那么在前端页面上,如果我们要经常用到公用的显示功能,并涉及到服务端逻辑操作 ...
- Python数据分析:pandas玩转Excel (二)
1 对Excel文件的操作 方法一: 使用xlrd库或者xlwt库进行对excel表格的操作读与写: 方法二: pandas库同样支持excel的读写操作:且更加简便. 2 pd.read_excel ...
- 用Python做词云可视化带你分析海贼王、火影和死神三大经典动漫
对于动漫爱好者来说,海贼王.火影.死神三大动漫神作你肯定肯定不陌生了.小编身边很多的同事仍然深爱着这些经典神作,可见"中毒"至深.今天小编利用Python大法带大家分析一下这些神作 ...
- 01 . Prometheus简介及安装配置Grafana
Promethus简介 Prometheus受启发于Google的Brogmon监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在S ...
- 04 . Mysql主从复制和读写分离
Mysql AB复制 AB复制又称之为主从复制,用于实现数据同步,实现Mysql的AB复制时,数据库的版本尽量保持一致,如果不能保持一致,最起码从服务器的版本要高于主服务器,但是就无法实现双向复制 ...
- 面试题:我们重写一个对象的时候为什么要同时重写hashcode()和equals()方法
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 在创建的类不重写hashCode()和equals() 方法时,默认使用 java 提供的 java.l ...
- windows FTP工具,Windows FTP工具下载!
IIS7服务器管理工具能够作为FTP的客户端,进行FTP的命令操作,可在客户端,下载,安装FTP软件! 同时,它也可以作为VNC的客户端,进行VNC的命令操作!它能够批量连接Windows和Linux ...