如何用Moco-runner搭建测试服务器?

来源:互联网 发布:unix编程环境 pdf 编辑:程序博客网 时间:2024/05/29 04:47

文章来源:网易易测(微信号:et163yun)



关于MOCO

moco是一个简单搭建模拟服务器的程序库/工具,主要用于测试集成。这个基于 Java 开发的开源项目已在 Github 上获得了不少关注:https://github.com/dreamhead/moco


moco目前支持多种使用方式,最基本的方式是两种:API和独立运行。本文主要讲解独立运行的sever搭建。


独立运行:moco主要是通过将配置放入json文件中,启动moco的时候,需要指定使用的配置文件路径,这样配置就可以生效了。配置文件工作原理大致如下:



MOCO搭建准备

Step1:配置jdk:打开cmd窗口,通过java –version 检查是否成功安装jdk。


Jdk下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,选择适合自己电脑系统的版本进行下载安装。


Jdk安装方法:

 windows:http://jingyan.baidu.com/article/bea41d435bc695b4c41be648.html

● linux:http://www.cnblogs.com/caosiyang/archive/2013/03/14/2959087.html


如果出现以下信息则说明安装正确。 



Step 2:下载moco-runner jar文件,目前版本是 0.11.0:

https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/moco-runner-0.11.0-standalone.jar


MOCO基础搭建

Step1:新建文件夹,将2.2中下载的moco-runner-0.11.0-standalone.jar文件放置此目录,并在该目录新建json文件,命名为foo,此文件作为moco的配置文件。


Step2:编写配置文件,像下面这个样子描述你的moco 服务的配置:


Step3:通过配置文件 foo.json 启动 moco服务在命令行输入:

java -jar moco-runner-<version>-standalone.jar http -p 12306 -c foo.json

其中< version> 替换为下载的 Jar 包的版本,此处为 0.11.0 ,所以执行:java -jar moco-runner-0.11.0-standalone.jar http -p 12306 -c foo.json

-p 指定 Moco 服务端口。


Moco-runner成功启动如下图:


需要注意的是,执行以上的命令,需要先 cd 到 Jar 文件所在的目录,然后 foo.json 文件也需要放在同一个目录才行,否则会报错。或者可以通过使用 Jar 文件和 .json 文件绝对路径的方式也可以。


json 文件路径也可以使用相对路径,如:./api/foo.json


用postman访问moco-runner sever:


如果他人也想访问,需要提供本机IP就可以了。


启动服务之后,必然会根据需求stub出各种各样接口反馈, moco服务可以检测到配置文件的变更,假如你修改了配置文件,不需要重新启动moco,服务照样可以生效。


进阶操作

参考moco官方文档:https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md以下列举几个较为常用的配置。


1.url:在request中设置uri,访问 http://localhost:12306/foo ,就可以获取到内容bar。

[

    {

        "request" : {

          "uri" : "/foo"

        },

         "response" : {

          "text" : "bar"

        }

    }

]


2. 带有参数的请求, 启动浏览器,并访问http://localhost:12306/foo?parm=blash

[

    {

      "request" : {

          "uri" : "/foo",

          "queries" : {

              "param" : "blash"

            }

        },

      "response" : {

          "text" : "bar"

        }

    }

]


3.返回特定的status

[

    {

    "request" :

    {

      "uri" : "/foo"

     },

    "response" :

    {

      "status" : 503

    }

    } 

]


4.返回json数据

[

  {

      "request" :{

              "uri": "/getJson"              

       },

      "response" :{

          "json": {

                "foo": "bar"

               }              

      }

   }

]    


5.通过不同的请求方式返回不同的参数,以下通过POST和GET返回不同的参数

[

   {

     "request": {

     "uri": "/test1",

     "method": "POST"

     },

     "response": {

     "json": {

     "code":"200",

     "desc":" POST success"

     }

   }

   },   

   {

      "request": {

      "uri": "/test1",

      "method": "GET",

    },

      "response": {

      "json": {

      "code":"200",

      "desc":" GET success "

    }

    }

   }

]  


6.Json请求参数

[

   {

        "request": {

            "uri": "/json",

            "json": {

                "foo": "bar"

            }

        },

        "response": {

            "text": "foo"

        }

    }


]


配置文件

moco 支持在配置文件中引入其他配置文件,这样就可以分服务定义配置文件,便于管理。


例如你有两个不同路径的 API:http://xxx.com/path1/login 和 http://xxx.com/path2/pay (登录和支付接口)。


按照上一小节所讲,我们可以写好 login 和 pay 的两个配置文件(或写在一起),分别设置 request 的 url 为 /path1/login 和 /path2/pay 。如果需要测试的接口很多,则不利于管理,且 path1、path2 这么混乱的分布于不同的配置文件中,对于以后想要更改也很不方便。


● 正确的姿势应该是这样的:


同样写好 login.json 和 pay.json 两个配置文件,然后写一个配置文件 ,配置如下:


// config.json

[

   {"context":"/path1", "include":"login.json"},

   {"context":"/path2", "include":"pay.json"}

]


login 和 pay 两个文件没有特殊要求,和之前的写法一样。比如:


// pay.json

[

    {

        "request": {

            "uri": "/pay",

            "method": "POST",

            "json": {

                "phone":"18688886666",

                "password":"123456"

            }

        },

        "response": {

            "json": {

                "state":"0"

            }

        }

    }

]

// login.json

[

    {

        "request": {

            "uri": "/login",

            "method": "POST",

            "json": {

                "amount":"100"

            }

        },

        "response": {

            "json": {

                "state":"0"

            }

        }

    }

]


然后启动 moco 服务的命令是:

java -jar moco-runner-<version>-standalone.jar http -p 12306 -g config.json


要注意的是,最后指定的参数是 -g config.json !


如果只是想引入多个 json 文件的话,全局配置文件中可以不使用 context 字段。比如:

// 不使用 context 字段的 config.json。

[

    {"include":"login.json"},

    {"include":"pay.json"}

]


MOCO的不足

moco的使用很简单,配置也很方便,目前更是提供了http、rest、socket服务。但是也仅仅是能stub出接口,模拟出简单的场景。如果接收到请求后需要做一些处理,如需查询数据库、进行运算、或者一些复杂的操作,就无能为力了。所以是否选用moco,就取决于开发者是否只是需要一个简单的模拟服务器。



0 0
原创粉丝点击