首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试Mock利器--moco runner是如何工作的?

接口测试Mock利器--moco runner是如何工作的?

作者头像
软测小生
发布2020-09-27 20:40:09
1.3K0
发布2020-09-27 20:40:09
举报
文章被收录于专栏:软测小生软测小生

1.什么是MOCO?

moco是一个搭建模拟服务器的工具,其支持API和独立运行两种方式。

API运行:通常是在junit等测试框架中使用

独立运行:是通过一个jar包开启服务

2.moco能解决什么问题?

Moco是针对HTTP集成而生的,不过,现在也有人把它用在其它需要一个模拟服务器的场景中。比如,在移动开发中,有人开发一个移动应用,需要有一个远端服务,但在开发时,这个服务还不存在,他就用Moco模拟了一个服务,保证移动应用可以顺利的开发。同样,也有人把它用在Web前端开发里,当我们的页面需要通过与服务器交互时,就可以用Moco模拟这样一个服务。这种做法在开发一个页面原型时,非常有用,因为那个时候,我们还来不及开发一个完整的服务。

3.moco在接口测试中的作用?

对于前端开发而言:moco可以模拟服务器,来对开发出来的页面,进行交互调试

那么一般接口文档输出后,测试人员可能需要提前进行接口用例的编写,而这时接口开发工作还没完成,如果对接口用例进行执行的前提是开发人员完成接口开发。这样,降低测试开发效率。

这时,如果测试人员使用moco框架,就可以在接口文档输出后,在接口开发完成前,设计用例过程中,使用moco搭建一个模拟服务器。在用例设计完成后,即使接口开发工作还未完成,也可以立即进行执行接口用例,在这个过程中可以修改、补充用例,在接口开发完成以后,只需要简单的去执行所有的接口用例脚本就 OK,省去了很大的工作量,并且这些完善的用例脚本,用自动化去执行,效果更佳。

4、Mock服务moco-runner Demo

下载moco-runner的Jar包: https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.12.0/moco-runner-0.12.0-standalone.jar 准备环境: Windows 并且安装Java环境。

5、Get请求如何模拟呢?

配置文件config.json GET请求定义访问路径和数据格式,如下:

[{
    "description":"这是一个带参数的get请求",
    "request":
        {
            "method":"get",
            "uri":"/login"
        },
    "response":
        {
            "text":"返回这是一个带参数的get请求"
        }
}]

参数说明: description是描述 request是请求 uri是请求路径 response是返回结果 text是返回的是文本类型内容

运行jar包,启动moco-runner服务

java -jar moco-runner-0.12.0-standalone.jar start -p 8801 -c config.json

参数说明: java -jar 是启动jar文件命令 http -p 是访问协议和访问端口号 -c 是模拟的接口文件

启动服务之后便可以在浏览器中进行测试接口,输入地址:http://127.0.0.1:8801/login 会返回上述config.json文件中定义的文本内容,此处使用postman进行测试,其返回结果如下:

从上面结果可看出已经正常显示,不过中文显示乱码,需要在配置文件中加入编码格式,解决中文乱码问题,这里直接编辑config.json文件保存即可,服务会监听到配置文件的改动之后自动重启服务。

            "headers":
            {
                "Content-Type":"text/html;charset=gbk"
            }

6、Post请求如何模拟呢?

只是post的请求方式中传递数据的方式不一样了,所以只需要稍微修改一下config.json内容即可,修改如下:

[{
    "description":"这是一个带参数的POST请求",
    "request":
        {
            "method":"post",
            "uri":"/login_post",
            "forms":{
                "name":"Ruancexiaosheng",
                "pwd":"testpwd"
            }
        },
    "response":
        {
            "text":"返回这是一个带参数的POST请求",
            "headers":
            {
                "Content-Type":"text/html;charset=gbk"
            }
        }
}]

完成修改之后同样是通过运行jar包启动moco runner服务,然后使用接口访问,结果如下:

java -jar moco-runner-0.12.0-standalone.jar start -p 8801 -c config_post.json

上述的文件中的接口都是单独存放,当然,所有接口可以维护在一个文件,如下:

[{
    "description":"这是一个带参数的get请求",
    "request":
        {
            "method":"get",
            "uri":"/login"
        },
    "response":
        {
            "text":"这是一个带参数的get请求",
            "headers":
            {
                "Content-Type":"text/html;charset=gbk"
            }
        }
},
{
    "description":"这是一个带参数的POST请求",
    "request":
        {
            "method":"post",
            "uri":"/login_post",
            "forms":{
                "name":"Ruancexiaosheng",
                "pwd":"testpwd"
            }
        },
    "response":
        {
            "text":"这是一个带参数的POST请求",
            "headers":
            {
                "Content-Type":"text/html;charset=gbk"
            }
        }
}]

往期推文:

Python 如何使用 HttpRunner 做接口自动化测试

为何Android 7.0 以上Charles和Fiddler无法抓取HTTPS包?

Fiddler对安卓App抓包(逍遥模拟器APP)

AWS与Docker

如何使用AWS EC2+Docker+JMeter构建分布式负载测试基础架构 Docker容器数据持久化和容器网桥连接 Docker删除image和container Docker与VM虚拟机的区别以及Docker的特点

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软测小生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.什么是MOCO?
  • 2.moco能解决什么问题?
  • 3.moco在接口测试中的作用?
  • 4、Mock服务moco-runner Demo
    • 5、Get请求如何模拟呢?
      • 6、Post请求如何模拟呢?
      相关产品与服务
      容器镜像服务
      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档