接口服务模拟Mock Server之moco-runner详细使用

Mock Server原理

在我们平时的接口测试工作中,系统的业务很少是孤立存在的,大部分业务相互之间都是需要关联调用的。前端与后端的相互协作实现业务逻辑,接口或服务之间相互协作。或者使用第三方公司的服务等。

这些场景给我们的联调测试带来技术的挑战,那么我们应该怎么办呢?我们通常的处理方式是搭建一个临时的server,模拟服务,提供数据进行联调测试。这时mock server就闪亮登场了

首先我们先了解下mock server的作用:

接口服务模拟之Mock Server

图1

接口服务模拟之Mock Server

图2

说明:

①从图1可以看出,被测试系统依赖接口服务,外部服务依赖及模块服务依赖;

②从图2可以看出,使用mock server解决了我们对接口,外部服务,模块服务的依赖。

Mock server的使用

前置条件:已安装配置好JDK环境(如何安装可参考文章:http://www.51ste.com/share/det-761.html

①下载moco-runner文件

下载地址:

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

当前最新版本下载地址:

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

下载完成可以得到 moco-runner-1.2.0-standalone.jar 文件

②在相同的目录下新建一个login.json文件

[

  {

    "response" :

      {

        "text" : "mock server start"

      }

  }

]

③ 启动mock server服务

java -jar moco-runner-1.1.0-standalone.jar http -p 12306 -c login.json

说明:现在,打开浏览器访问http://localhost:12306,你将看到“ mock server start”,说明mock server启动成功。就是这么的简单,mock server就搭建起来了。

模拟接口服务

①编写响应内容order.json文件

[

  {

    "request":

    {

      "method":"post",

      "uri":"/order",

      "json":

      {

        "productType":"NORMAL_CARGO",

        "shipConsigneeId":"135401",

        "sRegionId":22592,

        "customerOuId":12707,

        "boBusinessTypeId":10637

      }

    },

    "response":

    {

      "json":

      {

        "customerOuId":"12707",

        "projectId":34512,

        "carrierId":"2343"

      }

    }

  }

]

说明:此为编写服务的请求字段及响应的字段内容,这里为POST请求,且接口为/order。(大家根据自己的需要,编写内容)

②启动mock server服务

java -jar moco-runner-1.1.0-standalone.jar http -p 12306 -c order.json

③验证我们的接口服务是否正常,这里使用 Postman 来进行验证

接口服务模拟之Mock Server

说明:这里的地址由我们的 ip地址+端口+接口名称 来组成,请求头(Headers)定义Content-Type为:application/json

请求的主要报文内容来源于我们定义接口的请求部分,复制过来即可,如下图

接口服务模拟之Mock Server

接口服务模拟之Mock Server

接口服务模拟之Mock Server

说明:响应的内容来源我们定义的接口服务的响应部分,与定义的内容进行对比,看是否一致。

思考:这里我们的参数是json格式的,如果我们为URI参数(如:/order?id=666),form参数,该如何做呢?

只需要把json改为queries forms就行了

 

使用moco-runner模拟多个接口

①新建global.json文件,并将"1.json"等多个接口描述文件放到config文件夹下

 

[
	{
	"include" : "config/1.json"
	},
	{
	"include" : "config/2.json"
	},
	{
	"include" : "config/3.json"
	},
	{
	"include" : "config/4.json"
	}
]

②控制台执行语句

java -jar moco-runner-1.2.0-standalone.jar http -p 12306 -g global.json

如果解决返回结果中文字符乱码

在response中添加设置编码格式为“utf-8”

"headers":{
    "Content-Type":"application/json;charset=utf-8"
}

如:

[
  {
    "request":
    {
      "method":"get",
      "uri":"/test/weather",
      "queries":
     {
           "city":"chengdu"
      }
    },
    "response":
    {
      "headers":{
           "Content-Type":"application/json;charset=utf-8"
		},
      "json":{
	   "code": 200,
	   "message":"天气很好!"
	     }
    }
  }
]

使用postman请求结果如下:

接口服务模拟之Mock Server

mock https请求

java -jar moco-runner-1.2.0-standalone.jar https -p 443 -g global.json --https C:UsersAdministrator.keystore est.cer --cert test2021 --keystore test2021 

说明:

C:UsersAdministrator.keystore est.cer  //https的证书路径
--cer test2021  //密钥库密码
--keystore test2021  //密钥密码

postman使用结果:

接口服务模拟Mock Server之moco-runner详细使用

通过上面的https命令我们可以知道,我们没有https的证书,因此首要任务是生成https的证书。

这里提供使用JDK自带工具keytool生成证书,使用文章地址:https://blog.csdn.net/CPS1016347441/article/details/102154691



留言