首页 > 解决方案 > 在 Pytest 中使用本地导入

问题描述

我从来没有真正完全理解 Python 是如何处理包的,我现在遇到了问题。但是谷歌搜索似乎没有帮助,因为我发现这个话题真的很混乱。

我有一个具有这种结构的项目:

project_name/
    src/
        main.py
        utils/
            string_utils.py
    tests/
        test_string_utils.py

我正在使用 Pytest 运行单元测试,目前在“test_string_utils.py”文件中我有以下内容:

from ..src.utils.string_utils import StringUtilsClass

但是我转到文件夹“project_name”并尝试使用以下任何命令运行测试我得到错误:

$ pytest tests/

ValueError:尝试相对导入超出顶级包

我知道 python 的 -m 参数,但似乎运行“pytest -m”具有完全不同的行为。

我该如何解决这个问题?我是否使用了错误的文件夹架构?我不认为我正在构建的应该是一个 pip 包(这将简化导入)

标签: pythonpytest

解决方案


您是否尝试过:from src.utils.string_utils import StringUtilsClass没有 .. 在 src 之前?或者from string_utils import StringUtilsClass


推荐阅读