Apifox 接口测试完整指南

该文章已生成可运行项目,

Apifox 作为一体化 API 协作平台,集接口文档、调试、Mock、自动化测试于一身,是接口测试的高效工具-1-5

一、快速上手:基础接口测试

1. 环境准备
  • 访问 Apifox 官网下载客户端(支持 Windows/macOS/Linux),或直接使用 Web 版-5

  • 注册账号并登录

2. 创建项目与配置接口
  • 新建项目,建议勾选“包含示例数据”便于快速上手-5

  • 点击“+” → “新建接口”,选择请求方法(GET/POST/PUT/DELETE 等)-5

  • 填写接口 URL,按需配置 Query、Headers、Body 参数

3. 发送请求与查看响应
  • 点击“发送”按钮执行请求-5

  • 在下方响应区域查看返回结果(状态码、响应体、响应时间等)-5

二、核心功能详解

1. 接口自动鉴权

许多接口需要登录后才能访问。通过 Apifox 的前置脚本环境变量可实现自动登录-1

实现思路

1. 请求登录接口获取 token
2. 将 token 存入环境变量
3. 在后续请求的 Header 中自动携带 token

关键代码(前置脚本):

// 请求登录接口获取 token
pm.sendRequest({
    url: "https://api.example.com/login",
    method: "POST",
    body: {
        mode: "raw",
        raw: JSON.stringify({ username: "test", password: "123456" })
    }
}, function (err, res) {
    const token = res.json().data.token;
    pm.environment.set("AdminToken", token);  // 缓存到环境变量
});

将公共脚本设置在分组目录上,该分组下所有接口都会自动携带 token-1

📌 变量优先级:临时变量 > 环境变量 > 全局变量-1

2. 参数传递与数据流转

在自动化测试中,接口间的数据传递是关键。Apifox 提供两种方式-2

方式适用场景语法示例
动态值引用简单、一次使用{{$.1.response.body.userId}}
提取变量复杂、多次使用提取后使用 {{userId}}

方式一:动态值引用(推荐)

  • 在任意输入框点击“魔棒”图标

  • 选择「读取前置步骤的运行结果」即可自动生成表达式-2

方式二:提取变量

// 在后置脚本中提取
const userId = pm.response.json().data.userId;
pm.environment.set("userId", userId);  // 存为环境变量
// 后续接口中使用 {{userId}} 引用

在脚本中获取变量(注意不能用插值语法):

// 获取临时变量
const value = pm.variables.get("variableName");
// 获取环境变量
const envValue = pm.environment.get("envVariable");
// 获取全局变量
const globalValue = pm.globals.get("globalVariable");
3. 接口自动加签

对于需要签名验证的接口,可在前置脚本中动态计算 sign 参数-1

// 前置脚本:自动生成签名
const params = request.data;
const sortedKeys = Object.keys(params).sort();
let signStr = "";
sortedKeys.forEach(key => {
    if (key !== "sign") {
        signStr += `${key}=${params[key]}&`;
    }
});
signStr += `key=${pm.environment.get("apiSecret")}`;
const sign = CryptoJS.MD5(signStr).toString();
pm.request.body.update({
    mode: "raw",
    raw: JSON.stringify({ ...params, sign })
});
4. 断言设置

在接口的后置脚本中添加断言,实现自动化验证-7

// 状态码断言
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

// 响应体断言
pm.test("Response contains user id", function () {
    const jsonData = pm.response.json();
    pm.expect(jsonData.data.userId).to.exist;
});

// 响应时间断言
pm.test("Response time < 2000ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(2000);
});

💡 快捷方式:Apifox 支持从响应中自动生成断言,无需手写代码-7

三、自动化测试场景编排

1. 创建测试场景
  • 进入「自动化测试」模块

  • 点击“+”创建新的测试场景

  • 从接口列表导入测试步骤,按业务流程排序-7

2. 流程控制

Apifox 支持丰富的流程控制-1

  • 条件判断:根据上一步结果决定执行分支

  • 循环:For 循环、ForEach 遍历

  • 等待:设置延迟时间

  • 事务:将多个步骤组合为原子操作

3. 数据驱动测试
  • 准备 CSV 文件,第一行为变量名,后续行为数据-7

  • 在测试场景的「测试数据」模块导入 CSV

  • 接口参数中引用变量:{{username}}{{password}}

  • 运行时会自动使用每行数据执行测试-7

CSV 示例

username,password,expectedCode
admin,123456,200
test,wrong,401
user,,400

四、高级功能

1. Mock 服务

基于接口定义自动生成模拟数据,支持前后端并行开发-5

  • 支持 Mock.js 语法动态生成数据

  • 可设置响应延迟模拟网络状况

  • 支持条件 Mock(根据请求参数返回不同响应)

2. 性能测试

Apifox 支持基础性能测试-7

  • 设置虚拟用户数(VUs)

  • 配置测试时长和爬坡时间

  • 实时查看 QPS、响应时间、错误率等指标

3. CI/CD 集成

通过 Apifox CLI 实现持续集成-1-7

# 生成命令行
apifox run --project-id=123 --environment=test --report-path=./report

Jenkins 集成示例

pipeline {
    agent any
    stages {
        stage('API Test') {
            steps {
                sh 'apifox run --project-id=12345'
            }
        }
    }
}
4. 定时任务
  • 安装 Apifox Runner 到服务器

  • 创建定时任务,设置运行时间和频率

  • 运行结果可通过钉钉、企业微信、飞书、Email 通知-7

五、最佳实践建议

  1. 环境管理:创建 dev/test/prod 多套环境,使用环境变量区分不同环境的域名-4

  2. 数据隔离:测试数据与生产数据分离,测试后自动清理临时数据-6

  3. 公共脚本复用:将通用的鉴权、加签逻辑封装为公共脚本,在分组级别引用-1

  4. 分层测试策略:单元测试(70%)+ 集成测试(20%)+ 端到端测试(10%)-6

  5. 持续回归:将核心业务流程加入回归测试套件,每次上线前批量运行-7

六、常见问题解决

问题解决方案
接口返回 401检查 token 是否过期、Authorization 头格式是否正确-6
参数传递失败确认变量作用域(临时/环境/全局)和引用语法-2
Mock 数据不符合预期检查 Mock 规则优先级,清除浏览器缓存-6
异步接口测试设置轮询脚本(如每5秒查询一次)和超时时间-1

Apifox 的功能覆盖了接口测试的完整流程,从单接口调试到复杂业务场景编排,再到 CI/CD 集成,能够显著提升测试效率。建议从基础接口验证入手,逐步构建覆盖核心业务流程的自动化测试体系-6-7

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BlueSea 每日coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值