You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman如何不使用CSV或其他数据文件为单个接口发送不同测试用例

完全可以实现,你当前的整体思路是对的,只需要修正两处代码错误,再加一套循环执行逻辑即可:

你现有代码的问题

  • 你用到的data变量是Postman集合运行时导入外部数据文件才会自动生成的变量,不使用外部文件的情况下这个变量不存在,会直接报错
  • postman.setNextRequest()方法的入参是Postman中请求的名称字符串,不是请求体内容,你原来的传参会导致执行失败

具体实现方案

这个方案完全不需要依赖任何外部文件,所有测试用例直接写在Postman脚本内即可:

1. 配置接口前置脚本

在你当前接口的Pre-request Script标签下替换为以下代码:

// 首次执行时初始化迭代索引和所有测试用例
if (!pm.globals.has('current_case_idx')) {
    pm.globals.set('current_case_idx', 0)
    // 所有测试用例直接写在这里,需要新增直接在数组里加就行
    pm.globals.set('test_cases', JSON.stringify([
        {
            "test": "yusuf-klmn",
            "imageUrl": "",
            "name":"lop-kjm",
            "test2": "yusufplm",
            "type": "Product",
            "category": "string",
            "price": 0,
            "salePrice": 0,
            "currency": "TRY",
            "taxRatio": 0,
            "salesUrl": ""
        },
        {
            "test": "yusuf-klmn-2",
            "imageUrl": "",
            "name":"lop-kjm-2",
            "test2": "yusufplm-2",
            "type": "Product",
            "category": "string",
            "price": 100,
            "salePrice": 80,
            "currency": "TRY",
            "taxRatio": 18,
            "salesUrl": "https://example.com"
        }
    ]))
}

// 读取当前用例,设置为请求体变量
const currentIdx = parseInt(pm.globals.get('current_case_idx'))
const allCases = JSON.parse(pm.globals.get('test_cases'))
// 保持你原来的数组格式请求体
pm.globals.set('req_body', JSON.stringify([allCases[currentIdx]]))
// 索引自增,准备下一次执行
pm.globals.set('current_case_idx', currentIdx + 1)

2. 配置接口测试脚本

在你当前接口的Tests标签下添加以下代码,控制循环执行逻辑:

const currentIdx = parseInt(pm.globals.get('current_case_idx'))
const allCases = JSON.parse(pm.globals.get('test_cases'))

if (currentIdx < allCases.length) {
    // 还有未执行的用例,继续执行当前接口
    // 注意:这里要替换为你这个接口在Postman里的实际名称,大小写、空格必须完全一致
    postman.setNextRequest("你的接口请求名称")
} else {
    // 所有用例执行完成,清理全局变量
    pm.globals.unset('current_case_idx')
    pm.globals.unset('test_cases')
    pm.globals.unset('req_body')
    postman.setNextRequest(null)
}

3. 执行方式

你的请求体保持原来的{{req_body}}即可,打开Postman集合Runner,选择当前接口所在的集合,迭代次数设置为大于等于你的测试用例数量即可,不需要选择任何外部数据文件,直接运行就会自动按顺序执行所有你写在脚本里的测试用例。

简化替代方案

如果你的测试用例数量很少,也可以直接复制多个相同的接口请求,每个请求单独设置不同的请求体,按顺序放在集合内,直接运行集合即可,优点是逻辑简单,缺点是修改用例时需要同步修改多个请求。


内容的提问来源于stack exchange,提问作者Yusuf ÖZTÜRK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:54:05