关于mock工具的推荐moco-runner

mock在我们测试中经常被用到,这里提一下自己经常用的一种简单快捷的小工具moco-runner。moco-runner的使用很简单,下面做一个简单的说明:

1、下载moco-runner工具包也就是一个小jar包,我这里使用的是moco-runner-0.11.0-standalone.jar

下载传送门:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/moco-runner-0.11.0-standalone.jar

moco 基本属性,
14 known properties:
"method",   --使用的方法,包含:get、post、delete、head等
"headers",  --请求头信息
"json",     --json格式的数据,可以在请求和响应中
"factory",
"uri",     -- 项目路径。如/postwithparam
"text",    -- 文本域,一般用于返回
"cookies", -- cookies信息
"xpaths",
"json_paths",
"version",
"file",
"queries",         --get方法,传参时用
"path_resource",
"forms"          --post方法,传参时用
"redirectTo"    --重定向到某个地址

2.根据需要简单构造mock server返回值:

模拟get请求: startupGet.json

[
  {
    "description":"模拟一个没有参数的get请求",
    "request":{
      "uri":"/getdemo",
      "method":"get"
    },
    "response":{
      "text":"this is the no param request"
    }

  },
  {
    "description":"模拟一个带参的get请求",
    "request":{
      "uri":"/getwithparam",
      "method":"get",
      "queries": {
        "name": "huhansan",
        "age": "18"
      }
      },
      "response":{
        "text":"i have coming back now."
      }
    }
]

模拟post请求 startupPost.json

[
  {
    "description":"模拟一个post请求",
    "request":{
      "uri":"/postDemo",
      "method":"post"
    },
    "response":{
      "text":"This is my first moco post demo... "
    }
  },
  {
    "description":"模拟一个带参的post请求",
    "request":{
      "uri":"/postwithparam",
      "method":"post",
      "forms": {
        "name": "huhansan",
        "sex": "male"
      }
      },
      "response":{
        "text":"i am come back now...huhansan"
      }
    }
]

模拟带cookie的请求 startupWithCookies.json

[
  {
    "description":"这是一个会返回cookies信息的get请求",
    "request":{
      "uri":"/getCookies",
      "method":"get"
    },
    "response":{
      "cookies":{
        "login":"true"
      },
      "text":"Congratulation for get the cookies info."
    }

  },
  {
    "description":"这是一个带cookies信息的get请求",
    "request":{
      "uri":"/get/with/cookies",
      "method":"get",
      "cookies":{
        "login":"true"
      }
    },
    "response":{
      "text":"This is with the cookies can be get request"
    }

  },
  {
    "description":"这是一个带cookies信息的post请求",
    "request":{
      "uri":"/post/with/cookies",
      "method":"post",
      "cookies":{
        "login":"true"
      },
      "json":{
        "name":"huhansan",
        "age":"18"
      }
    },
    "response":{
      "status":"200",
      "json":{
        "huhansan":"success",
        "status":"1"
      }
    }
  }
]

模拟一个带header的请求 startupwithHeader.json

[
  {
    "description":"带header的post请求",
    "request":{
      "uri":"/post/with/headers",
      "method":"post",
      "headers":{
        "Content-Type":"application/json"
      },
      "json": {
        "name": "xx",
        "sex": "male"
      }
      },
      "response":{
        "json":{
          "xx":"success",
          "status":"1"
        }
      }
    }

]

模拟一个带重定向的请求 startupWithRedirect.json

[
  {
    "description":"这是一个带自动重定向的请求,重定向到百度",
    "request":{
      "uri":"/redirect"
    },
    "redirectTo":"http://www.baidu.com"
  },
  {
    "description":"重定向到一个自己的网站",
    "request":{
      "uri":"/redirect/topath"
    },
    "redirectTo":"/redirect/new"
  },
  {
    "description":"这是被重定向到的请求",
    "request":{
      "uri":"/redirect/new"
    },
    "response":{
      "text":"redirect successful."
    }
  }
]

然后将模拟的请求保存为不同的json文件,在服务器上或者本地启动moco-runnner server,以startupGet.json为例 命令如下:

java -jar ./moco-runner-0.11.0-standalone.jar http -p 8889 -c startupGet.json

然后你可以使用jmeter工具去测试,如果你是本地访问的话,那么访问地址是

http://localhost:8889/getdemo     method选择:get

将返回:"this is the no param request

前端开发中,Mock 工具主要用于模拟后端 API 数据,方便开发者在本地环境中进行单元测试、预览功能或调试,而无需依赖实际的服务器。这里有一些常用的前端开发 Mock 工具推荐: 1. **mockjs**(https://github.com/nuysoft/Mock):这是一个非常轻量级的 JavaScript 库,用于生成模拟数据,常用于静态网页、单元测试和API接口模拟。 2. **supertest**(https://github.com/visionmedia/supertest):虽然这个库主要是针对 Node.js 测试的,但它也包含了 Mock HTTP 请求的功能,适用于 Express 或其他基于 Node.js 的应用。 3. **axios-mock-adapter**(https://github.com/axios/axios-mock-adapter):配合 axios 使用,提供了一种便捷的方式来模拟 Axios 发送的请求,适合 Vue、React 等框架的项目。 4. **json-server**(https://github.com/typicode/json-server):这个工具能快速创建一个本地 JSON 服务器,非常适合快速搭建起模拟 API 的环境。 5. **Faker.js**(https://faker.js.org/):这是一个生成随机数据的库,除了可用于生成模拟数据外,也可以作为 Mock 数据源。 6. **ng-mocks**(https://github.com/kulshekhar/ng-mocks):专为 AngularJS 和 Angular 应用设计的 Mocking library,提供了高级功能。 7. **Puppeteer Mock API**(https://github.com/puppeteer/puppeteer/tree/main/examples/mocking-api):利用 Puppeteer(浏览器自动化工具)可以自定义返回的数据,模拟真实 API。 选择哪个工具取决于你的具体需求,比如团队的技术栈、项目的复杂程度以及你是否希望集成到特定的测试框架中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值