在Pytest中使用本地导入

时间:2018-11-18 15:01:00

标签: python 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包(可以简化导入)

1 个答案:

答案 0 :(得分:1)

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