yapi官网教程
yapi 源码地址
YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。
实例demo体验
如果您是将服务器代理到 nginx 服务器,请配置 nginx 支持 websocket。在location /添加
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
使用我们提供的 yapi-cli 工具,部署 YApi 平台是非常容易的。执行 yapi server 启动可视化部署程序,输入相应的配置和点击开始部署,就能完成整个网站的部署。部署完成之后,可按照提示信息,执行 node/{网站路径/server/app.js} 启动服务器。在浏览器打开指定url, 点击登录输入您刚才设置的管理员邮箱,默认密码为 ymfe.org 登录系统(默认密码可在个人中心修改)。
npm install -g yapi-cli --registry https://registry.npm.taobao.org
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 //重启服务
mkdir yapi
cd yapi
git clone https://github.com/YMFE/yapi.git vendors //或者下载 zip 包解压到 vendors 目录(clone 整个仓库大概 140+ M,可以通过 `git clone --depth=1 https://github.com/YMFE/yapi.git vendors` 命令减少,大概 10+ M)
cp vendors/config_example.json ./config.json //复制完成后请修改相关配置
cd vendors
npm install --production --registry https://registry.npm.taobao.org
npm run install-server //安装程序会初始化数据库索引和管理员账号,管理员账号名可在 config.json 配置
node server/app.js //启动服务器后,请访问 127.0.0.1:{config.json配置的端口},初次运行会有个编译的过程,请耐心等候
|-- config.json
|-- init.lock
|-- log
`-- vendors
|-- CHANGELOG.md
|-- LICENSE
|-- README.md
|-- client
|-- common
|-- config_example.json
|-- doc
|-- exts
|-- nodemon.json
|-- npm-debug.log
|-- package.json
|-- plugin.json
|-- server
|-- static
|-- test
|-- webpack.alias.js
|-- yapi-base-flow.jpg
|-- ydocfile.js
`-- ykit.config.js
更多配置参考
点击右上角的 +
新建项目,进入新建项目页面。
在新建项目页,填写项目信息:
- 项目名称不允许重复,包括其他分组
- 基本路径为接口统一添加了前缀
- 新建项目页只列出了部分配置,其他详细配置(环境配置、项目图标等)需要进入项目页的“设置”面板进行配置。
在项目页点击上方的 设置
Tab 进入项目设置面板,这个面板涵盖了项目的所有配置。
这里比新建项目页面新增的功能如下:
YApi 中支持项目迁移到不同的分组中。
迁移权限: 只有管理员和该项目的 owner 有权限对位置进行修改。项目 owner 主要有创建该项目的人、项目中的组长、创建分组的人、分组中的组长。
Tips: owner 权限判断的优先级是 项目权限 > 分组权限
该功能在 v1.3.12 版本上线,项目克隆功能可复制项目全部接口到一个新项目,如下图所示,点击红色框里面的 icon 使用。
YApi 支持项目复制功能,但是无法复制项目中的测试集合 list。
操作: 点击下图左上角的复制按钮,在弹窗中写入复制项目名称点击确定就可以完成项目复制
Tips: 如果你在该分组下有新建项目的权限,那你也同时拥有复制项目的权限
点击下方的删除按钮,输入项目名称进行删除。
删除项目是高风险操作,因此 YApi 对这个操作进行了特别的约束。
环境配置
一项可以添加该项目下接口的实际环境,供 接口测试 使用,这里增加了全局 header,可以在项目中设置全局 header 值。在接口运行页面的选择环境 select 中也增加环境配置
弹层。
v1.3.21 新增全局变量,用户可以在环境列表中定义全局变量的名称和值, 接口运行或者测试集合里面可以通过 { { global.err }} 来访问当前环境变量下定义的全局变量
点击添加接口根据需求手动填入数据,如果是本地环境(mook 数据),只需写 api 部分即可, eg: /api/test
注意⚠️:导出格式选择 c1,否则会去出现导入数据格式错误
在 yapi 中选择数据管理,选择对应好倒入工具以及想要导入到的分类中,将 postman 中导出的文件添加进来
成功导入数据后返回对应的项目分类中:
进入项目页,可以看到项目下的所有接口,需要注意的是,YApi有 接口集合
和 测试集合
两个概念。
接口集合
将接口进行分类,使接口结构更清晰,一个接口只能属于一个集合,且不允许与其他接口重名。测试集合
为了方便我们测试接口,测试集合
将若干接口组合在一起,在这里一个接口可以属于不同集合。新建接口 后,点击新添加的接口,右侧可以看到接口的预览信息,点击右侧的 编辑
Tab项进入编辑面板。
在该面板中你可以看到接口的基本信息(接口名称、分类、路径),除此以外,你还可以完善以下接口信息:
json
& raw
两种形式。基于 mockjs (具体使用方法详见Mock 介绍)和 json5,使用注释方式写参数说明。 为了方便数据编写可以按F9来使用全局编辑接口运行功能,是用来测试真实接口的,类似『Postman』的功能。
点击运行 tab ,可进入到接口测试页面,首先安装『chrome crossRequest』扩展,才可正常使用此功能。
点击保存按钮可把当前接口保存到测试集,方便下次调试。
cross-request 安装步骤:
git clone https://github.com/YMFE/cross-request
chrome://extensions/
加载已解压扩展程序
,选择cross-request文件夹位置即可版本 v1.3.22 新增返回数据验证功能, 如果接口的返回数据格式为json schema 在接口运行时会对接口返回数据和定义数据格式进行校验
传统的接口自动化测试成本高,大量的项目没有使用自动化测试保证接口的质量,仅仅依靠手动测试,是非常不可靠和容易出错的。
YApi 为了解决这个问题,开发了可视化接口自动化测试功能,只需要配置每个接口的入参和对 RESPONSE 断言,即可实现对接口的自动化测试,大大提升了接口测试的效率。
使用 YApi 自动化测试,第一步需要做得是创建测试集合和导入接口,点击添加集合创建,创建完成后导入接口(同一个接口可以多次导入)。
编写测试用例主要涉及两个方面,一个是请求参数,另外一个是断言脚本。
编辑请求参数
请求参数可以填写期望的字符串,YApi 还提供了 Mock 参数和 变量参数。Mock参数用来生成随机字符串,变量参数是为了解决请求参数依赖其他接口的返回数据或参数。
可以根据需求选择对应的环境
**
变量参数
YApi 提供了强大的变量参数功能,你可以在测试的时候使用前面接口的 参数
或 返回值
作为 后面接口的参数
,即使接口之间存在依赖,也可以轻松 一键测试~
Tips: 参数只能是测试过程中排在前面的接口中的变量参数
格式:
$.{key}.{params|body}.{path}
例如:现有两个接口,分别是“导航标题”和“文章列表”
文章列表接口需要传参数: 当前标题(id)
,而这个 id 需要通过 导航标题
的返回值获取,这时应在 文章列表
的参数输入框中根据前者的 key 找到对应 id。
导航标题
的参数和返回值有如下结构:
参数:
返回值:
则 文章列表
的参数可以如下配置:
其中 $. 是使用 动态变量 的标志,即表示值为用例的请求参数,.269.body 即表示 key 值为
269 用例的返回值
如果 requestBody 是 json 格式也可以在 json 中写变量参数,如下图:
目前 yapi 中的query
,body
,header
和pathParam
的输入参数已经支持点击选择功能。无需自己填写表达式,只需在弹窗中选择需要展示的表达式即可。 输入选项包括常量
,mock数据
,在测试集合中也支持变量
选择。具体用法:单击编辑按钮打开表达式生成器,点击需要的数据创建表达式,这里也可以实时查看表达式结果。
Tips: 在测试集合中插入变量参数可以会出现下图的提示信息,这是正常现象。因为该参数只能在各个接口顺序执行的时候才能拉到变量参数中的值
编写断言脚本
编写完请求参数,可通过 js 脚本写断言,实现精准测试,在接口用例页面点击 Test 编辑。
在测试列表可以看到每个测试用例的 key,还有 开始测试、报告等功能
点击开始测试会按照 case 定义的参数从上往下一个一个进行测试,如果顺序有问题,可以拖动调整
测试完成之后,点击报告查看该次请求的结果
断言函数,详细 api 可查看 document
常用 api
http 状态码
http request params, 合并了 query 和 body
返回 response body
返回 response header
记录的 http 请求信息,假设需要获取 key 为 555 的接口参数或者响应数据,可通过 records[555].params 或 records[555].body 获取
log(message) 函数,调试时使用,log 信息仅仅在断言失败后打印,失败断言前的信息
log(234)
assert.equal(status, 400)
log(123)
输出结果: log: 234
AssertionError: 200 == 400
assert.equal(body.errcode, 0)
assert.equal(body.data.group_name, ‘testGroup’)
assert.equal(status, 200)
配置通用规则能够使自动化测试,可以基于通用的规则去控制,无需手动一个一个维护case.
开始测试功能是在浏览器跑自动化测试,他依赖于浏览器的使用环境。服务端自动化测试功能是在YApi服务端跑自动化测试,不需要依赖浏览器环境,只需要访问 YApi 提供的 url 链接就能跑自动化测试,非常的简单易用,而且可以集成到 jenkins。
点击服务端测试,出现如下弹窗,用户访问该 url 就可以获取当前测试用例的所有测试结果。
配置通用规则能够使自动化测试,可以基于通用的规则去控制,无需手动一个一个维护case.
mock.js网址
mock.js语法规范文档