Apifox 作为一体化 API 协作平台,集接口文档、调试、Mock、自动化测试于一身,是接口测试的高效工具-1-5。
一、快速上手:基础接口测试
1. 环境准备
-
访问 Apifox 官网下载客户端(支持 Windows/macOS/Linux),或直接使用 Web 版-5
-
注册账号并登录
2. 创建项目与配置接口
-
新建项目,建议勾选“包含示例数据”便于快速上手-5
-
点击“+” → “新建接口”,选择请求方法(GET/POST/PUT/DELETE 等)-5
-
填写接口 URL,按需配置 Query、Headers、Body 参数
3. 发送请求与查看响应
二、核心功能详解
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 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
五、最佳实践建议
-
环境管理:创建 dev/test/prod 多套环境,使用环境变量区分不同环境的域名-4
-
数据隔离:测试数据与生产数据分离,测试后自动清理临时数据-6
-
公共脚本复用:将通用的鉴权、加签逻辑封装为公共脚本,在分组级别引用-1
-
分层测试策略:单元测试(70%)+ 集成测试(20%)+ 端到端测试(10%)-6
-
持续回归:将核心业务流程加入回归测试套件,每次上线前批量运行-7
六、常见问题解决
| 问题 | 解决方案 |
|---|---|
| 接口返回 401 | 检查 token 是否过期、Authorization 头格式是否正确-6 |
| 参数传递失败 | 确认变量作用域(临时/环境/全局)和引用语法-2 |
| Mock 数据不符合预期 | 检查 Mock 规则优先级,清除浏览器缓存-6 |
| 异步接口测试 | 设置轮询脚本(如每5秒查询一次)和超时时间-1 |
Apifox 的功能覆盖了接口测试的完整流程,从单接口调试到复杂业务场景编排,再到 CI/CD 集成,能够显著提升测试效率。建议从基础接口验证入手,逐步构建覆盖核心业务流程的自动化测试体系-6-7。
3046

被折叠的 条评论
为什么被折叠?



