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

dbt run时如何排除Python测试文件?测试文件存放位置咨询

问题分析与解决方案

错误原因

dbt会将模型目录(如models/foo)下的所有.py文件视为Python模型进行解析。你的test_post_to_api.py是单元测试文件,没有定义dbt要求的Python模型结构(比如带@model装饰器的函数/类),因此触发了“每个Python文件必须定义一个模型”的解析错误。

解决方案

1. 推荐:将单元测试移至dbt专用测试目录

这是dbt项目的标准规范,能彻底解决问题:

  • dbt默认使用tests/目录存放各类测试(单元测试、数据测试等)。将test_post_to_api.py移动到tests/foo/目录下(与模型目录结构对应)。
  • 这样dbt run时只会扫描models/目录下的模型文件,不会处理tests/目录中的测试文件,自然避免解析错误。同时模型与测试分离,项目结构更清晰易维护。

2. 临时 workaround:通过路径匹配排除测试文件

如果暂时不想移动文件,可以通过路径通配符精确排除模型目录下的测试文件,执行命令:

dbt run --models foo --exclude path:models/foo/test_*.py

注意:这种方法只是在运行时排除文件,dbt仍会扫描到这些.py文件,存在潜在解析风险,长期建议使用第一种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 13:40:57