• home > tools > TestTools > Mock >

    yapi使用笔记

    Author:zhoulujun Date:

    yapi接口 接口编辑,导入json后,接口编辑,对于mock规则编辑不友好。yapi一个是 占位符模式,一个是 高级mock,自己写返回数据模式。


    之前一直用阿里 rap https://thx.github.io/RAP/index_zh.html

    对于yapi,感觉mock使用上,文档没有阿里的给的清晰明了。

    yapi接口 接口编辑,导入json后,接口编辑,对于mock规则编辑不友好。

    https://github.com/Open-Federation/json-schema-editor-visual/issues/38#issuecomment-962424412

    只有使用高级mock


    基础的使用啥的,网上教程一大把,比如:


    官方的稳定看看也基本能整明白

    基于mockjs占位符的mock

    可以将其简单理解为用于生成特定字串的函数, 具体可参见mockjs官方定义:

    https://github.com/nuysoft/Mock/wiki/Syntax-Specification#数据占位符定义规范-dpd

    不过此处并不支持mockjs中所有占位符功能,大概只相当于Mock.Random部分。

    常用占位符功能详述

    • @integer(min?, max?):返回一个随机的整数。

    • @float( min?, max?, dmin?, dmax? ):返回一个随机浮点数。

      • min:可选,整数部分最小值。

      • max:可选,整数部分最大值。

      • dmin:可选,小数部分最小长度。

      • dmax:可选,小数部分最大长度。

    • @string(pool, min, max):返回随机字串

      • length: 字串长度

      • min: 字串最短长度

      • max: 字串最大长度

      • pool:表示字符池。如果传入 'lower'、'upper'、'number'或'symbol',表示从内置的字符池从选取。对应关系如下:、

    • @pick(arr):

      • 示例:@pick(['this', 'is', 'picker', 'test'])

    可以从 MockJs学习笔记 https://www.zhoulujun.cn/html/tools/TestTools/Mock/8694.html 瞅瞅


    Mock.Random生成各种随机数据

    官方文档:https://github.com/nuysoft/Mock/wiki/Mock.Random

    TypeMethod
    Basicboolean, natural, integer, float, character, string, range, date, time, datetime, now
    Imageimage, dataImage
    Colorcolor
    Textparagraph, sentence, word, title, cparagraph, csentence, cword, ctitle
    Namefirst, last, name, cfirst, clast, cname
    Weburl, domain, email, ip, tld
    Addressarea, region
    Helpercapitalize, upper, lower, pick, shuffle
    Miscellaneousguid, id


    自定义Mock脚本-高级Mock

    YApi 提供了写 JS 脚本方式处理这一问题,可以根据用户请求的参数修改返回内容。

    脚本主要由两部分组成全局变量响应

    全局变量

    请求

    • header 请求的 HTTP 头

    • params 请求参数,包括 Body、Query 中所有参数

    • cookie 请求带的 Cookies

    响应

    • mockJson      接口定义的响应数据 Mock 模板

    • resHeader      响应的 HTTP 头

    • httpCode      响应的 HTTP 状态码

    • delay      Mock 响应延时,单位为 ms

    • Random      Mock.Random 方法,可以添加自定义占位符,详细使用方法请查看 Wiki

    使用方法

    1. 首先开启此功能

    2. Mock 脚本就是用 JavaScript 对 mockJson 变量修改,请避免被全局变量(httpCode, resHeader, delay)的修改

    根据请求参数重写 mockJson

    if(params.type == 1){
      mockJson.errcode = 400;
      mockJson.errmsg = 'error';
    }
    
    if(header.token == 't'){
      mockJson.errcode = 300;
      mockJson.errmsg = 'error';
    }
    
    if(cookie.type == 'a'){
      mockJson.errcode = 500;
      mockJson.errmsg = 'error';
    }


    生成高度自定义数据内容

    var a = [1,1,1,1,1,1,1,1,1,1]
    
    mockJson = {
        errcode: 0,
        email: Random.email('qq.com'),
        data: a.map(function(item){
            return Random.city() + '银行'
        })
    }


    Mock 优先级说明

    请求 Mock 数据时,规则匹配优先级:Mock 期望 > 自定义 Mock 脚本 > 项目全局 mock 脚本 > 普通 Mock。

    如果前面匹配到 Mock 数据,后面 Mock 则不返回。





    这里推荐一个 好东东:https://easyyapi.com/setting/rules/class_doc.html


    参考文档:

    YAPI高级Mock使用文档 https://juejin.cn/post/6898213163464917005



    转载本站文章《yapi使用笔记》,
    请注明出处:https://www.zhoulujun.cn/html/tools/TestTools/Mock/8695.html