You need to enable JavaScript to run this app. Conftest verify 测试中如何使用--data加载的外部JSON测试数据
优惠活动
大模型
产品
解决方案
定价
更多

Conftest verify 测试中如何使用--data加载的外部JSON测试数据

Conftest测试用例调用外部--data加载测试数据的实现方法

核心实现逻辑

Conftest通过--data参数递归加载的YAML/JSON文件,会自动映射为Rego中data对象下的可访问路径,路径规则为:相对于--data指定的根目录的相对路径,去掉文件扩展名,测试用例可以直接将该路径指向的对象作为with input as的入参,替代原本内联的JSON内容。

具体操作步骤

  • 规范目录结构,将所有大体积测试输入JSON独立存储,示例结构如下:
    • ./policy/:存放所有正式合规策略代码
    • ./policy/examples/:存放测试用例依赖的外部输入JSON,比如:
      • good_deployment.json:合规的K8s Deployment资源样例
      • bad_deployment_missing_security_context.json:缺少安全配置的违规资源样例
  • 执行conftest verify命令时,通过--data参数指定加载根目录(即策略代码所在目录,和官方文档的示例保持一致):
    conftest verify --data ./policy
    
    此时工具会递归扫描./policy下所有JSON/YAML文件,自动将./policy/examples/good_deployment.json的内容映射为data.examples.good_deployment路径下的可访问对象。
  • 在Rego测试用例中直接引用对应路径的外部数据作为输入,替代原本内联的JSON串,示例代码如下:
    # 引入examples目录下加载的测试数据集
    import data.examples
    
    # 测试合规资源不会触发违规
    test_deployment_with_valid_security_context {
        no_violations with input as examples.good_deployment
    }
    
    # 测试缺少安全配置的资源会触发违规
    test_deployment_without_security_context_triggers_violation {
        not no_violations with input as examples.bad_deployment_missing_security_context
    }
    

常见注意事项

  • 路径映射不要搞混层级:比如--data ./policy时,存放在./policy/examples/xxx.json的文件对应路径是data.examples.xxx;如果--data指定的是其他独立测试数据目录,比如--data ./test_fixtures,那存放的文件对应路径会从data下开始按相对目录层级映射,不要和正式策略的data路径混淆。
  • 文件名避免使用空格、特殊字符,推荐使用小写蛇形命名,防止Conftest的路径解析出现异常。
  • Conftest加载data文件时会自动忽略以.开头的隐藏文件,临时测试数据不要使用隐藏文件命名规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 01:54:04