使用CSV作为输入输出运行dbt单元测试时遇「File not found for fixture」错误
解决dbt单元测试「File not found for fixture」错误
路径规则说明
dbt单元测试的fixture文件路径是相对于测试配置YAML文件所在目录,而非项目根目录或tests/根目录,这是多数人踩坑的核心原因。
针对性修复方案
根据你的测试配置文件位置,选择对应路径写法:
如果测试YAML放在
models/目录下(比如models/core/test_configs.yml):
使用项目根目录相对路径,直接指向tests/fixtures下的文件:unit_tests: - name: check_complicate_stuff description: "blabla" model: core_display given: - input: ref('model') format: csv fixture: tests/fixtures/mock_core_table.csv expect: format: csv fixture: tests/fixtures/expected_output.csv如果测试YAML放在
tests/目录下(比如tests/unit_tests/core_tests.yml):
使用相对于该YAML文件的路径(因为tests/fixtures和tests/unit_tests同级):unit_tests: - name: check_complicate_stuff description: "blabla" model: core_display given: - input: ref('model') format: csv fixture: ../fixtures/mock_core_table.csv expect: format: csv fixture: ../fixtures/expected_output.csv
额外排查项
- 核对文件名大小写:dbt对路径大小写敏感,确保配置里的文件名和实际文件完全匹配
- 验证文件存在性:手动确认
tests/fixtures/下确实存在mock_core_table.csv和expected_output.csv,无拼写错误 - 检查文件权限:确保运行dbt的用户拥有读取这些CSV文件的权限
内容的提问来源于stack exchange,提问作者Javier Lopez Tomas
相关产品推荐
相关产品推荐

