zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    数据结构与算法
    android vitamio的坑
    Fragment的坑
    scrollview里面嵌套listview的坑
    关于微信小程序的tabbar
    Intent初级学习
    HDU 4562 守护雅典娜
    SGU 542 Gena vs Petya
    [二] EditText and Button
    A Data Structure for Dynamic Trees
  • 原文地址:https://www.cnblogs.com/DeryKong/p/14168249.html
Copyright © 2011-2022 走看看