yapi踩坑记录

876 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

github:github.com/YMFE/yapi

前言

由于业务需要,部署yapi方便前后端联调

依赖

  • nodejs(7.6+)
  • mongodb(2.6+)
  • git

安装

# 安装命令
npm install -g yapi-cli --registry https://registry.npm.taobao.org
# 启动服务,会启动一个9090服务,访问http://127.0.0.1
yapi server

利用pm2方便服务管理维护

npm install pm2 -g  //安装pm2
cd  {项目目录}
pm2 start "vendors/server/app.js" --name yapi //pm2管理yapi服务
pm2 info yapi //查看服务信息
pm2 stop yapi //停止服务
pm2 restart yapi //重启服务

更新(更新没试过,不太敢适,安装插件直接跑不起来,一堆类似issus官方不处理)

cd  {项目目录}
yapi ls //查看版本号列表
yapi update //更新到最新版本
yapi update -v {Version} //更新到指定版本

问题汇总

自动化测试无法使用,断言方法未找到

blog.csdn.net/qq_23994787…

vendors/server/utils/sandbox.js修改如下,需要给写入权限的根据提示修改

const Safeify = require('safeify').default;
 
module.exports = async function sandboxFn(context, script) {
    // 创建 safeify 实例
    const safeVm = new Safeify({
        timeout: 3000,
        asyncTimeout: 60000,
        // quantity: 4,          //沙箱进程数量,默认同 CPU 核数
        // memoryQuota: 500,     //沙箱最大能使用的内存(单位 m),默认 500m
        // cpuQuota: 0.5,
        // true为不受CPU限制,以解决Docker启动问题
        unrestricted: true,
        unsafe: {
            modules: {
              // 引入assert断言库
                assert: 'assert'
            }
        }
    });
 
    safeVm.preset('const assert = require("assert");');
    
    script += "; return this;";
    // 执行动态代码
    const result = await safeVm.run(script, context);
 
    // 释放资源
    safeVm.destroy();
    return result
};

其他

基于他文档二开或者安装dingding通知都是失败,官方维护力度不大,优点失望

优点

  1. 后端、前端、测试都可以使用,一次创建所有人都可以使用
  2. 统一接口规范测试规范,提高接口测试速度
  3. 后端同学可以写简单的测试用例,用于接口的自动化测试
  4. 可以逼真、快速的mock数据,提前联调
  5. 接口统一在yapi测试,逆推接口文档要规范,比如入参,出参
  6. 测试接口方便,会根据接口定义添加参数

Tip

  1. 定时器导入yapi的时候建议使用增量导入,变更的手动修改,防止修改过的被覆盖
  2. 导入接口后可以新建测试集合,批量导入到测试集合,方便后面测试接口
  3. 环境设置,第一条为默认