如何校验接口响应的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
相关产品推荐
相关产品推荐

