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

如何在uv工作区根目录运行pytest时使用各子包的pyproject.toml配置?

在uv工作区根目录运行pytest时使用各子包独立配置

我正在使用uv工作区,目录结构如下:

albatross
├── packages
│   ├── bird-feeder
│   │   ├── pyproject.toml
│   │   └── src
│   │       └── bird_feeder
│   │           ├── __init__.py
│   │           └── foo.py
│   └── seeds
│       ├── pyproject.toml
│       └── src
│           └── seeds
│               ├── __init__.py
│               └── bar.py
├── pyproject.toml
├── README.md
├── uv.lock
└── src
    └── albatross
        └── main.py

想知道如何在根目录(albatross目录)运行pytest时,让其使用每个子包各自的pyproject.toml配置?


解决方案

1. 配置根目录pyproject.toml,启用工作包识别并指定测试路径

首先确保根目录的pyproject.toml正确声明工作区成员,让uv识别所有子包:

[workspace]
members = [
    "packages/*",
    "src/albatross"
]

接着在根目录的pyproject.toml中添加pytest的测试路径配置,指向各子包的测试目录(若未创建测试目录,先为每个子包建立tests文件夹):

[tool.pytest.ini_options]
testpaths = [
    "packages/bird-feeder/tests",
    "packages/seeds/tests",
    "src/albatross/tests"
]

之后在每个子包的pyproject.toml中编写专属的pytest配置,比如bird-feeder的配置示例:

[tool.pytest.ini_options]
pythonpath = ["src"]  # 确保pytest能定位到子包源码
addopts = "-xvs"      # 自定义pytest运行参数

完成配置后,在根目录执行uv run pytest,pytest会扫描所有指定的测试路径,自动读取对应子包目录下的pyproject.toml配置。

2. 手动指定子包配置文件(临时调试场景)

如果需要临时针对特定子包加载配置,可以在根目录运行命令时,通过--config参数明确指定对应子包的配置文件:

uv run pytest packages/bird-feeder --config=packages/bird-feeder/pyproject.toml packages/seeds --config=packages/seeds/pyproject.toml

这种方式适合单次调试,不适合日常批量运行。

3. 补充:利用子目录的pytest.ini/conftest.py

除了pyproject.toml,pytest会自动识别子目录下的pytest.ini或conftest.py文件。如果子包已有这些文件,pytest扫描到对应目录时会自动加载配置,可作为pyproject.toml配置的补充方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:50:07