Mock

这里介绍2种mock方法 ,1.使用别人开发好的工具 2. 利用flask建立mock api

1. moco

mock除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口

此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发会自己mock一个api服务端,自己给自己提供调用接口的返回数据

mock-server用途就是开发在开发的过程中,需要依赖一部分的接口,但是对方没有提供或者环境等等情况

moco环境搭建

1.moco是开源的java软件,所以需要预先安装好java环境,我的是JDK1.8

2. 下载moco程序 ,可从github 上下载 https://github.com/dreamhead/moco

下载后放在本地目录,并在同一目录新建一个json文件

image
[ 
    {
    "response" : {
            "text" : "Hello World! "
        } 
    } 
]

打开cmd ,cd到该目录下 ,运行

java -jar moco-runner-0.12.0-standalone.jar http -p 6666 -c test.json

image

这时候打开火狐浏览器或IE浏览器等 (Chrome浏览器打不开),即可看到返回数据。修改返回数据不用重启服务,修改json文件后,保存即可

image

官方说明

image

2. Flask 搭建接口

新建一个flask project

image
image

用最简单的flask 实现 mock 。而且还可以自定义。

@app.route('/') 表示 请求的路径,/ 表示域名下,一般可以改成和对应的接口一样的路径 例如获取人员接口为

http://127.0.0.1/api/back/user?page=1&offset=0&limit=10

域名为本机地址或服务器地址 ,路径改为@app.route('/api/back/user')

预计返回的格式为

{ "total": 1, "offset": 0,
"data": [ { "id": 1323, 
            "name": "张三", 
            "company": "Alibaba", 
            "tel": 18689985541, 
            "created_at": 1575388800,
            "num": 36.8, 
            "type": 0, 
            "sn": "IM04WY00301320180403",
            "user_no": 13568,
            "id_num": 4304126559996511,
            "face_image": "https://pics3.baidu.com/feed/8644ebf81a4c510f83dd9ce53ab56b2bd52aa522.jpeg" }]
}

那么mock 数据设定如下:

from flask import Flask,jsonify
import random

app = Flask(__name__)

token=random.randint(1,100)
headers={
    "Content-Type": "application/json; charset=utf-8" ,
    "token":  token
}
rsp={
  "total": 1,
  "offset": 0,
  "data": [
    {
      "id": 1323,
      "name": "张三",
      "company": "腾讯",
      "tel": 18689985541,
      "created_at": 1575388800,
      "num": 36.8,
      "type": 0,
      "sn": "IM04WY00301320180403",
      "user_no": 13568,
      "id_num": 4304126559996511,
      "face_image": "https://pics3.baidu.com/feed/8644ebf81a4c510f83dd9ce53ab56b2bd52aa522.jpeg"
    },
    {
      "id": 1323,
      "name": "李思",
      "company": "阿里",
      "tel": 18689985541,
      "created_at": 1575388800,
      "num": 36.8,
      "type": 0,
      "sn": "IM04WY00301320180403",
      "user_no": 13568,
      "id_num": 4304126559996511,
      "face_image": "https://pics3.baidu.com/feed/8644ebf81a4c510f83dd9ce53ab56b2bd52aa522.jpeg"
    }
  ]
}

@app.route('/api/back/user')
def getUsers():
    return jsonify(rsp),200,headers
# 如果返回的是一个元组,元组的类型是(response, status, headers).
# status值会覆盖默认的200状态码,headers可以是一个列表或者字典,作为额外的消息头。
#jsonify 把字典转换成json

if __name__ == '__main__':
    app.run()

如果返回的是一个元组,元组的类型是(response, status, headers)

image.png

返回的信息可以根据需要,用函数做相关的操作 ,例如生成一段随机的字符串,或者按照某些规则生成的数据,只需要按照python的函数那样写,即可生成自定义的mock数据 。headers ,状态码 ,返回的json串都很容易实现。前端请求的时候只需要改一下域名即可使用。

你可能感兴趣的:(Mock)