moco挡板使用

在进行接口测试过程中,Moco可以通过简单的配置request和response 对象,达到模拟后端返回的效果

  • 支持HTTP、HTTPS、socket协议;
  • 支持在request中设置Headers、cookies、statusCode;
  • 支持get、post、put、delete请求;
  •  无需环境配置,只需要java运行环境即可;
1、下载安装

moco jar包下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.1.0/

2、moco使用

1)新建文件夹,将下载好的 moco-runner-1.1.0-standalone.jar 文件放入文件夹中去,新建user.json文件,用于配置请求和响应内容

{
      "request":{
          "method":"post", 
          "uri":"/jiekou",
          "headers":{"Content-type":"application/json"},
          "json":{"id":"12306","name":"moco"}
        },
      "response":{
            "status":"200",
            "text":"ceshi"
          }
}

2)

{
  "request":{
      "headers":{"Content-Type":"application/json;charset=UTF-8"},   // 请求 headers
      "method":"post",
      "uri":"/jiekou2",
      "json": {
        "type": "1",
        "data": {
              "citeCaseId": "11111111",
              "party": [
                  {
                      "partyId": "001",
                      "name": "张三",
                      "agent": [
                          {
                              "agentId": "002"
                          },
                          {
                              "agentId": "002"
                          }
                      ]
                  }
              ]
            }
        }
    },
  "response":{
      "status":"200",
      "headers": {
          "Content-Type":"application/json;charset=UTF-8"   // 响应的 headers
        },
      "json":{"code":101,"message":"必要参数缺失。"}
    }
}

3)

{
  "request":
    {
        "headers":{"Content-Type":"application/json"},
        "method":"get",
        "uri":"/getList", 
        "queries":{"sasj":"20100101"}  // 带参数的GET请求,如 localhost:8880/getList?sasj=20100101
    },
  "response":
    {
        "file":"build.xml"   
    // 请求返回文件(可以返回xml中的内容,将xml文件放在与jar包同级目录下即可, "file":"files/build.xml",user.json所在目录下的二级目录files)
    }
}

注意

若要同时模拟多个接口,可以用[ ]括起来,并用,分割,也就是json的格式。

 3、启动mock

cmd 进入moco-runner-1.1.0-standalone.jar 所在文件夹,执行下面命令

java -jar moco-runner-1.1.0-standalone.jar http -p 8881 -c user.json

运行成功。直接使用postman或者其他接口调用工具调用接口即可。

 

 4、分模块

使一个项目会分好几个模块,如登录注册等员工模块、聊天模块、博文模块等,会有很多很多请求,如果我们把不同业务的mock数据都写在一个文件里面,那就太难看了,为此,我们需要做一些改变来解决这个问题

下面以TodoList.json为例

// 在根目录下新建 TodoList.json 文件,内容如下
  { "context": "/user", "include": "user.json" }, 
  { "context": "/newUser", "include": "data.json"} 
]

 这样,当我们访问 

http://localhost:8880/user/userInfo 和 http://localhost:8880/newUser/newUserInfo 时候
会跳到后面对应的 json 再处理一遍
// user.json
[{"request":{"uri":"/userInfo"},"response":{"json":{"username": "Sampson"}}}]

// newUser.json
[{"request":{"uri":"/newUserInfo"},"response":{"json":{"username": "NewSampson"}}}]

Moco支持在全局的配置文件中引入其他配置文件,这样就可以分服务定义配置文件,便于管理。 
配置好文件,在全局文件中引入即可: 
全局配置如下:

java -jar moco-runner-1.1.0-standalone.jar start -p 8880 -g TodoList.json

注意,此时需要通过参数  -g  在加载全局配置文件。,使用的不是  -c  

原文:https://blog.csdn.net/vite_s/article/details/54583243

5、Mock测试存在的问题

使用Mock测试有时可以提高团队的开发效率,但当B、C都开发完成代码后,这时应该把E2E测试代码从使用Mock测试改为调用真实的模块,以避免出现模块之间集成部分漏测的问题。这里说mock存在的问题,主要是让开发和测试不要过分的依赖/相信mock接口。

使用mock时,切记的几点:

1)测试人员不应该被覆盖率高的E2E自动化测试所迷惑,覆盖率高不代表没有问题。尤其在接手新项目中,需要查看E2E测试中有没有使用Mock测试,进一步去判断这些地方使用Mock测试是否合理,这些Mock测试是否应该换成真实模块间的调用和集成。

2)当把mock接口换成实际接口后,测试/开发也必须把之前的测试重新做一遍。

ps: 当你使用mock接口来提高效率,请注意:你的工作量其实是比 直接只用实际接口 多了 一倍的。如果测试时,偷懒,替换成实际接口后,只是简单测试,那么 当实际接口和mock预期接口有差异时,故障便和你相遇了。

建议: mock接口只能主流程联调/ 异常返回测试,不要过分依赖mock接口进行测试。

3)测试完毕,上线前,请一定确保 为了mock而做的相关代码/配置文件的修改,已经完全恢复了

更多用法可查看本段原文:https://blog.csdn.net/qq_35716699/article/details/90581880

原文地址:https://www.cnblogs.com/DeryKong/p/14168249.html