因为之前用 apipost 的时候, 有些接口是需要先登录得到 token的, 把 token 放到请求头里才能正常用, 这样实在是太麻烦了

痛点:

  • 大部分接口有前置操作, 还是重复的那种
  • 一个接口写好了,别的接口崩了,需要能够一次请求所有接口,进行测试
  • JMeter 不会用, 麻烦

结果 apifox 都能解决

我的方式是把需要前置操作的接口放到同一个目录下, 然后在目录中写好前置操作的脚本, 内容如下

const echoPostRequest = {
  url: pm.environment.get('BASE_URL') + "/auth/login",
  method: "POST",
  header: {
   "Content-Type": "application/json"
  },
  body: {
    mode: "raw", // 此处为 urlencoded
    // 此处为 urlencoded
    raw: JSON.stringify({ username: 'admin', password:'password' }),
  },
};
pm.sendRequest(echoPostRequest, function (err, response) {
        var token = response.json().data.token;
        pm.environment.set('token', token);
        var headers = pm.request.headers;

        headers.upsert({
            key: 'token',
            value: pm.environment.get("token"),
        });
      });

然后使用的时候只要在接口里设置 {{token}} 就可以了

可能用的格式

 // body 为 x-www-form-urlencoded 格式
  body: {
    mode: "urlencoded", // 此处为 urlencoded
    // 此处为 urlencoded
    urlencoded: [
      { key: "account", value: "apifox" },
      { key: "password", value: "123456" },
    ],
  },
  /*
  // body 为 form-data 格式
  body: {
    mode: 'formdata', // 此处为 formdata
    // 此处为 formdata
    formdata: [
      { key: 'account', value: 'apifox' },
      { key: 'password', value: '123456' }
    ]
  }

  // body 为 json 格式
  header: {
    "Content-Type": "application/json", // 注意:header 需要加上 Content-Type
  },
  body: {
    mode: 'raw',// 此处为 raw
    raw: JSON.stringify({ account: 'apifox', password:'123456' }), // 序列化后的 json 字符串
  }

  // body 为 raw 或 json 格式
  body: {
    mode: 'raw',
    raw: '此处为 body 内容',
  }
  */

断言

// 对返回结果进行断言
pm.sendRequest("https://postman-echo.com/get", function(err, res) {
  if (err) {
    console.log(err);
  }
  pm.test("response should be okay to process", function() {
    pm.expect(err).to.equal(null);
    pm.expect(res).to.have.property("code", 200);
    pm.expect(res).to.have.property("status", "OK");
  });
});

Apifox 也可以直接进行性能测试