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

如何校验接口响应的code属性中不存在指定环境变量的取值?

接口响应code属性禁止包含指定环境变量的校验方案

校验规则说明

待校验环境变量new role code固定取值为H7rZEm,要求接口返回的所有属性名含code的字段,取值均不能匹配该值:

  • 未匹配到禁用值:测试通过
  • 匹配到禁用值:测试失败

通用校验逻辑

  • 第一步:从环境配置中读取new role code的取值,记为禁用值
  • 第二步:将接口响应解析为可遍历的JSON结构
  • 第三步:递归遍历响应全量字段,筛选所有属性名包含code的字段
  • 第四步:逐个校验筛选出的字段值,只要有一个匹配禁用值直接判定测试失败,全部不匹配则判定通过

常用测试工具实现示例

Postman 测试脚本

直接复制到接口的Tests标签中即可运行:

// 读取环境变量
const forbiddenCode = pm.environment.get("new role code");
// 解析响应
const resp = pm.response.json();
let hasForbiddenCode = false;

// 递归遍历所有含code的字段
function checkCodeFields(obj) {
    if (typeof obj !== 'object' || obj === null) return;
    for (const key in obj) {
        // 匹配所有属性名带code的字段,不区分大小写
        if (key.toLowerCase().includes('code') && obj[key] === forbiddenCode) {
            hasForbiddenCode = true;
            return;
        }
        checkCodeFields(obj[key]);
    }
}
checkCodeFields(resp);

// 输出测试结果
pm.test("所有code属性均不含禁用环境变量值", () => {
    pm.expect(hasForbiddenCode).to.be.false;
});

Python + Requests 实现

import os
import requests

# 读取环境变量
forbidden_code = os.getenv("new role code")
# 请求接口获取响应
resp = requests.get("替换为你的接口地址").json()
has_forbidden_code = False

def check_code_fields(obj):
    global has_forbidden_code
    if isinstance(obj, list):
        for item in obj:
            check_code_fields(item)
        return
    if isinstance(obj, dict):
        for k, v in obj.items():
            if "code" in k.lower() and v == forbidden_code:
                has_forbidden_code = True
                return
            check_code_fields(v)

check_code_fields(resp)
if has_forbidden_code:
    raise AssertionError("测试失败:响应存在code属性匹配禁用值")
else:
    print("测试通过")

本次接口校验结果

本次接口返回的所有含code属性的字段:statusCode取值0000、两个角色的code分别为T11AsR、fh1xqE,均未匹配禁用值H7rZEm,测试通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:09:01