我给我们团队做的apifox的分享

为什么用APIFOX

​    如果你只是一个人,什么方便用什么,无所谓。但是,在公司就一定是一个团队,只要是团队,就需要协作,就需要**沟通成本,时间成本**,这些,如果你用了APIFOX,就都帮你节省下来了。

​   APIFOX=Postman + Swagger + Mock + JMeter

​   通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好 API 文档,API 调试、API 数据 Mock、API 自动化测试就可以直接使用,无需再次定义;API 文档和 API 开发调试使用同一个工具,API 调试完成后即可保证和 API 文档定义完全一致。高效、及时、准确!🔥🔥🔥

​   下图是大多数团队的常规做法

​   上图可以看到,N多个直线连接,每一个直线连接都很可能意味着时间成本+沟通成本。  如果用了APIFOX,就会变成下面这样,非常简洁。

使用

​    注册 -》新建项目-》新建团队=》拉成员。

​   这个实在是太简单了,顺序官网里都有,就不说了。但是,团队和项目的规则需要说一下。对于我们的团队,这样规定。比如,A项目就建个A团队,每个微服务做为一个项目。

导入/编写接口

​   swagger导入接口,定时自动导入

    随便找到一个接口,选择运行标签页,基本的操作都PostMan一模一样,PostMan能做的他全部都一样,在此不再详述。

    你也可以自己创建一个API,同步swagger后也不会被覆盖。如果是自己新写的接口,要写返回,可以把以前的JSON复制过来,直接智能导入。

{

  "code": 200,

  "msg": "",

  "data": {

    "name":"zs"

    "code":"001"

  }

}

​   如果有不正确的,自行微调。

​   还可以添加响应示例。由于格式都已经定好,所以他能自动MOCK

    这些自动生成的规则都可以去选择(对测试有用)

    如果需要修改接口,比如再加个参数,自动生成同样的会把新的给弄过来。可以演示一下。至此,接口文档结束。当然,如果有SWAGGER导入过来的直接用就行了。新建接口是为了还没有上测试环境的新接口,来给前后端联调用的。

前端直接调用这个MOCK地址,就可以开始照着结构开发了

    具体字段什么意思,新接口的这个东西应该由后端开发去导入或者自行去填写

    另,需要文档的话,分享出去即可。

    复制完链接即可看到很美观的文档了

 

单元测试:

​   在运行页这里CTRL+S就能直接保存相应的测试用例。测试如果需要单元测试,也只需要点按钮就行了,节省大量时间。

    自动化测试:

 

​   复制是复制一份新数据,绑定就是用原来的数据

​   如果需要测试数据的话可以去填写,不需要的话填写线程数和循环次数(同JMeter),点运行。

​   每个都可以点更多详情去查看

​   测试套件是可以套多个测试用例的,可以用回归测试,在此也不在详述。

数据类型校验

​   数据类型校验,就是你期望什么类型,实际返回什么类型,如果不一致,会返回错误。但是这里注意一下,如果返回空,会检验失败。可以点进去勾选允许NULL。

 环境

​   接口路径 建议不要包含 HTTP 协议及域名,这部分建议在 环境管理 的前置URL里设置,接口调试时的 URL 会自动加上当前环境的前置URL。

BUG重现

​   这是一个非常实用的功能。比如测试告诉你这个页面有BUG,然后你点进去看,打开CHROME,打开NETWORK,看到一大堆的输入参数,头都大了,难道要一个个复制过去么?现在不需要了!!!怎么做?

​   利用导入抓包数据(url)

​   chrome的NETWORK右键copy as curl(bash)

​   apifox直接新建导入抓包工具,所有参数会全部填充。

​   最后,当然是改成localhost去调试了。

APIHUB

​   在设置里面有APIHUB,可以看到很多开放的API,对于我们团队来说,看看别人的API的命名规范,是一个很好的学习方式。

前端MOCK

前端必须看,必须看,必须看。重要的事情说3遍

https://www.apifox.cn/help/articles/apifox-mock

注:如果之前后端API没定义完整的可以直接把已经成功的返回值给复制过来,可自动生成

 自动登录脚本

​   像我们项目里的header里需要带Authorization的该怎么办呢?

​   那就可以把他作为全局参数。token24小时后失效,那就需要去访问一下登录接口,然后把token放到全局参数里即可,1天只需要做一次。但是,我还是觉得这样很麻烦,因为登录是auth开头的,而其它服务不是auth开头的。按照上面说的配置环境的原则,不是没法搞了么?其实可以加个专门的auth环境,这样就可以了。那这不是更麻烦了么?其实,有办法一键搞定。**用脚本。**

​   前置知识:环境变量相当于K-V。可以在其它地方随意调用该变量,调用方式通过 {{}}

​   下面就可以写脚本了

function sendLoginRequest() {

  // 获取环境里的 前置URL

  const baseUrl = pm.environment.get("BASE_URL");

  // 构造一个 POST x-www-form-urlencoded 格式请求。这里需要改成你们实际登录接口的请求参数。

  const loginRequest = {

    url: "http://10.89.33.54:3001/auth/login",

    method: "POST",

    // body 为 json 格式

    header: {

      "Content-Type": "application/json", // 注意:header 需要加上 Content-Type

    },

    body: {

      mode: 'raw',// 此处为 raw

      raw: JSON.stringify({ username: 'admin', password:'admin123@',"code":" " }), // 序列化后的 json 字符串

    }

  };

  // 发送请求。

  // pm.sendrequest 参考文档: https://www.apifox.cn/help/app/scripts/api-references/pm-reference/#pm-sendrequest

  pm.sendRequest(loginRequest, function(err, res) {

    if (err) {

      console.log(err);

    } else {

      // 读取接口返回的 json 数据。

      // 如果你的 token 信息是存放在 cookie 的,可以使用 res.cookies.get('token') 方式获取。

      // cookies 参考文档:https://www.apifox.cn/help/app/scripts/api-references/pm-reference/#pm-cookies

      const jsonData = res.json();

      // 将 accessToken 写入环境变量 ACCESS_TOKEN

      pm.environment.set("Authorization", jsonData.data.access_token);

      // 将 accessTokenExpires 过期时间写入环境变量 ACCESS_TOKEN_EXPIRES

      pm.environment.set(

        "ACCESS_TOKEN_EXPIRES",

        jsonData.data.userInfo.expireTime

      );

    }

  });

}



// 获取环境变量里的 ACCESS_TOKEN

const accessToken = pm.environment.get("Authorization");

// 获取环境变量里的 ACCESS_TOKEN_EXPIRES

const accessTokenExpires = pm.environment.get("ACCESS_TOKEN_EXPIRES");



// 如 ACCESS_TOKEN 没有值,或 ACCESS_TOKEN_EXPIRES 已过期,则执行发送登录接口请求

if (

  !accessToken ||

  (accessTokenExpires && new Date(accessTokenExpires) <= new Date())

) {

  sendLoginRequest();

}

​   注意,这里面的变量Authorization和{{Authorization}}没有直接关系,只是名字一样。{{Authorization}}引用的永远是环境变量里的key,和脚本里的变量没有任何关系。上图有变量预览,这样可以确认下是否已经取到

​   那这个脚本写在哪里呢?为什么会生效呢?

在接口管理里,找到项目概览,然后自定义脚本。

    可以看到,所有项目都是默认继承父级的,项目概览是所有项目的父级,所以会生效

角色职责

1. 后端在 Apifox 上定好接口文档初稿。

2. 前端 使用系统根据接口文档自动生成的 Mock 数据进入开发,无需手写 mock 规则。

3. 后端 使用接口用例 调试开发中接口,只要所有接口用例调试通过,接口就开发完成了。如开发过程中接口有变化,调试的时候就自动更新了文档,零成本的保障了接口维护的及时性。

4. 后端 每次调试完一个功能就保存为一个接口用例。

5. 测试人员 直接使用接口用例测试接口。

6. 前后端 都开发完,前端从Mock 数据切换到正式数据,联调通常都会非常顺利,因为前后端双方都完全遵守了接口定义的规范。

总结:

  • 后端人员:编写或导入接口,接口有修改必须要通过APIFOX进行接口自测,只要自测成功那接口文档必然会进行同步。
  • 前端人员:直接MOCK生成后端结构进行开发。
  • 测试:可以在自动化测试里进行接口测试,可以在套件里自己配置测试步骤,比如可用于回归测试。
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值