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

pytest_schema Enum验证异常:合法枚举值未通过校验

问题原因与解决方案

核心问题

错误提示里的Enum校验列表和你代码中定义的["testObs", "test"]完全不符,且出现'testObs' should be instance of 'list'的异常,根源是误用了Enum类或者schema定义被意外覆盖:

  • 你可能导入了Python标准库enum.Enum而非schema库提供的Enum校验器,前者是用来定义枚举类的,不是值校验工具,会导致校验逻辑完全错误;
  • 代码运行时,api_schema里的observer约束被替换成了包含BY_CARRIER等值的其他Enum,和你编写的定义不一致。

解决方案

  1. 修正Enum导入
    确保导入语句是从schema库中引入所需工具:

    from schema import schema, And, Enum
    

    若确实需要使用标准库枚举,用别名区分避免冲突:

    from enum import Enum as PyEnum
    from schema import schema, And, Enum
    
  2. 确认schema定义未被覆盖
    在调用validate前打印api_schema,检查observer字段的约束是否和编写的一致:

    print(api_schema)
    

    如果输出的Enum列表是错误提示里的['testObs', 'BY_CARRIER', ...],说明代码中有其他地方修改了api_schema,排查并修复覆盖逻辑。

  3. 单独测试校验逻辑
    单独验证observer字段的校验器,确认问题点:

    from schema import Enum
    obs_validator = Enum(["testObs", "test"])
    print(obs_validator.validate("testObs"))  # 正常应返回'testObs',无异常
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:45:31