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

Postman测试需求:从含Test标题的随机项中获取CategoryID

解决方案

核心思路是先过滤出标题包含“Test”的项,再从中随机选取一项。为避免重复代码,可将逻辑封装为可复用函数,在需要的地方直接调用即可。

步骤1:封装可复用函数

在Postman的集合前置脚本或全局脚本中添加以下函数(整个集合内的请求都能调用,无需重复编写逻辑):

// 从响应数组中随机选取标题含指定关键词的项
function getRandomItemByTitleKeyword(responseArray, keyword) {
    // 过滤出标题包含关键词的项
    const filteredItems = responseArray.filter(item => item.title?.includes(keyword));
    
    // 验证过滤结果,避免无匹配项导致后续请求出错
    pm.test(`至少存在一个标题包含"${keyword}"的项`, () => {
        pm.expect(filteredItems.length).to.be.greaterThan(0, `未找到标题包含"${keyword}"的项`);
    });
    
    // 随机选取一项
    const randomIndex = Math.floor(Math.random() * filteredItems.length);
    return filteredItems[randomIndex];
}

步骤2:在测试脚本中调用函数

替换原测试脚本为以下代码,直接调用封装好的逻辑:

// 获取响应数据
const responseData = pm.response.json();

// 调用函数,获取标题含"Test"的随机分类项
const testCategory = getRandomItemByTitleKeyword(responseData, "Test");

// 设置集合变量CategoryID
pm.collectionVariables.set("CategoryID", testCategory.id);

关键说明

  • 代码复用:封装的函数可在集合内任意请求的测试脚本中调用,不用重复编写过滤、随机选值的逻辑。
  • 容错处理:内置的断言会在无匹配项时直接触发测试失败,避免后续PUT请求使用无效的CategoryID。
  • 兼容性:item.title?.includes(keyword) 使用可选链操作符,防止部分响应项无title字段时抛出错误(若你的响应数据确保所有项都有title,可去掉?)。

示例验证

假设你的响应数据如下:

[
  {"id": 101, "title": "Test Electronics", "description": "测试用电子分类"},
  {"id": 102, "title": "Production Clothing", "description": "正式服装分类"},
  {"id": 103, "title": "Test Home Goods", "description": "测试用家居分类"}
]

执行脚本后,CategoryID只会被设置为101或103,不会选中正式分类102,完全符合需求。

内容的提问来源于stack exchange,提问作者DarthOpto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:05:09