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

Python unittest测试套件中测试专用工具的推荐存放位置

Python测试专用工具的推荐存放方案

方案1:测试目录下的独立子包(最常用)

给你的测试目录添加__init__.py,将其标记为Python可识别的包,再创建专门存放测试工具的子目录(同样添加__init__.py),目录结构如下:

your_project/
├── src/
│   └── your_app/          # 主业务代码目录
└── tests/
    ├── __init__.py        # 标记tests为Python包
    ├── test_api.py        # 业务测试文件
    ├── test_logic.py
    └── test_utils/
        ├── __init__.py
        └── utilities.py   # 你的测试工具代码

导入方式:

  • 绝对导入(更稳妥,不受运行路径影响):from tests.test_utils import utilities as tu
  • 相对导入:from .test_utils import utilities as tu(仅在tests包内部的测试文件中可用)

方案2:项目根目录下的独立测试工具包

如果测试工具需要跨多个测试子目录复用,或者想和业务测试代码彻底分离,可以在项目根目录单独创建测试工具包:

your_project/
├── src/
│   └── your_app/
├── tests/
│   ├── test_api.py
│   └── test_logic.py
└── test_utils/
    ├── __init__.py
    └── utilities.py

使用前需确保项目根目录在Python的sys.path中,最简单的方式是在项目根目录执行pip install -e .(需配合项目的setup.py或pyproject.toml配置文件),之后即可直接导入:
import test_utils.utilities as tu

方案3:利用pytest的conftest.py(仅适用于pytest框架)

如果你的项目使用pytest做测试框架,可直接把通用测试工具写到tests目录下的conftest.py中:

your_project/
├── src/
│   └── your_app/
└── tests/
    ├── conftest.py        # 存放测试工具、全局fixture
    ├── test_api.py
    └── test_logic.py

pytest会自动加载这个文件里的内容,测试文件无需手动导入,直接调用工具函数或使用fixture即可。

关于你遇到的ImportError

之前的相对导入报错,是因为你的tests目录没有添加__init__.py,Python无法将其识别为可导入的父包,导致相对导入找不到上下文。给tests目录补上__init__.py即可解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:45:45