Insomnia怎么使用数据模板批量测试_Insomnia参数化测试数据驱动方法【实战】

2026-09-10  494
Insomnia支持四种批量测试API的方法:一、CSV导入+环境变量;二、JavaScript预请求脚本动态注入;三、JSON配置文件结构化驱动;四、插件扩展支持YAML/Excel数据源。

如果您在Insomnia中需要对同一API接口使用多组输入数据执行重复验证,则无法依赖手动逐条修改请求体或参数。以下是实现批量测试的多种数据驱动方法:

一、使用内置环境变量+CSV导入构建数据模板

该方法通过将CSV文件作为外部数据源加载,在单个请求中循环执行不同行的数据组合,无需编写脚本即可完成参数化调用。

1、准备一个UTF-8编码的CSV文件,例如test_data.csv,内容包含表头和多行测试数据,如:
id,name,email
1,张三,zhangsan@example.com
2,李四,lisi@example.com

2、在Insomnia中创建新环境,点击环境右上角“…”,选择“Import CSV”,选中该文件并确认导入

3、在请求的Body中使用{{id}}{{name}}{{email}}等变量引用对应列值

4、点击请求右侧的“Run Collection”按钮,选择“Run with data file”,指定该CSV文件路径

5、Insomnia将自动为每一行数据生成一次独立请求,并在响应面板中分组显示结果

二、利用JavaScript预请求脚本动态注入数据

该方法适用于需运行逻辑判断、数据拼接或从外部API拉取测试集的场景,通过脚本控制每次请求前的数据生成行为。

1、在请求设置页切换至“Pre-request Script”标签

2、编写JavaScript代码,从内置变量或硬编码数组中提取当前迭代数据,例如:
const testData = [ { id: 1, name: "Alice" }, { id: 2, name: "Bob" } ];
const currentIndex = insomnia.getEnvironmentVariable("iteration") || 0;
insomnia.setEnvironmentVariable("currentId", testData[currentIndex].id);
insomnia.setEnvironmentVariable("currentName", testData[currentIndex].name);

3、在请求Body中使用{{currentId}}{{currentName}}占位符

4、配合Collection Runner设定迭代次数(如2次),每次执行前脚本自动更新环境变量

三、结合JSON配置文件与请求变量实现结构化驱动

该方法适合嵌套对象、数组或多层级参数的测试场景,利用JSON文件定义完整请求结构,再由Insomnia按行解析并注入。

1、新建JSON文件payloads.json,格式为数组,每项为完整请求体对象:
[{"user":{"id":101,"role":"admin"}},{"user":{"id":102,"role":"guest"}}]

2、在Insomnia中创建环境变量payloads,值设为该JSON字符串(可粘贴或通过脚本读取)

3、在Pre-request Script中解析JSON并选取当前索引项:
const payloads = JSON.parse(insomnia.getEnvironmentVariable("payloads"));
const idx = parseInt(insomnia.getEnvironmentVariable("iteration") || "0");
const currentPayload = payloads[idx];
insomnia.setEnvironmentVariable("bodyJson", JSON.stringify(currentPayload));

4、在请求Body类型设为“JSON”,内容填写{{bodyJson}}

5、运行Collection时启用“Data file”模式并指定迭代总数,确保与JSON数组长度一致

四、通过Insomnia插件扩展支持YAML/Excel数据源

该方法借助第三方插件突破原生仅支持CSV的限制,使YAML、Excel等更易维护的格式可直接参与参数化流程。

1、访问Insomnia插件市场,安装支持结构化数据导入的插件,例如“Data Driver for Insomnia”

2、重启Insomnia后,在请求右键菜单中出现“Load Data from YAML”选项

3、准备YAML文件cases.yml,内容示例:
- case_id: TC001
  method: POST
  url: /api/users
  body:
    name: "Test User"
    age: 25

4、执行插件命令后,插件自动将YAML中每个-项映射为一次请求配置,覆盖Method、URL、Headers、Body等字段

5、点击“Run All”即可按YAML顺序批量执行全部用例

相关版本

查看更多

相关攻略

查看更多

最新手游

查看更多

最新攻略

查看更多