Pytest 找不到 files/modules
Pytest can't find files/modules
我已经看过关于这个问题的几个不同的主题,但不知道如何将它应用到我的情况中。我的测试文件夹中没有 init.py,我尝试使用 conftest
。我有这样的目录结构:
--app
--app.py
--src
--init.py
--module1.py
--module2.py
--module3.py
--configs
--config.json
--non-default-config.json
--tests
--test1.py
--conftest.py
其中 app.py
导入模块 1,然后导入模块 2 和 3(使用 import src.module2
)。我在所有模块文件(和 app.py)中加载 config.json
使用:
with open('configs/config.json') as f:
CFG = json.load(f)
当我从应用程序目录 运行 app.py
时,这有效。但是,当我 运行 pytest
(我认为它也应该从 app 目录引用,因为 conftest.py 在 app 目录中)并且它导入 module1 (使用 import src.module1
),它找不到 configs/config.json
,但会找到 app/configs/config.json
。我不能使用它,因为它会导致我的应用程序在我 运行 app.py
时崩溃。但是,Pytest 可以从 src 文件夹中找到导入,即使它与 configs 文件夹处于同一级别。
如果我将 conftest.py
移动到 app 目录之外并使用 import app.src.module1
导入 module1,则此导入成功,但在 module1 中导入 module2 则失败。
我该如何解决这个问题?有没有更好的方法来构建我的项目?
通过 运行 pytest 从 app 文件夹而不是基本目录解决了这个问题。
我已经看过关于这个问题的几个不同的主题,但不知道如何将它应用到我的情况中。我的测试文件夹中没有 init.py,我尝试使用 conftest
。我有这样的目录结构:
--app
--app.py
--src
--init.py
--module1.py
--module2.py
--module3.py
--configs
--config.json
--non-default-config.json
--tests
--test1.py
--conftest.py
其中 app.py
导入模块 1,然后导入模块 2 和 3(使用 import src.module2
)。我在所有模块文件(和 app.py)中加载 config.json
使用:
with open('configs/config.json') as f:
CFG = json.load(f)
当我从应用程序目录 运行 app.py
时,这有效。但是,当我 运行 pytest
(我认为它也应该从 app 目录引用,因为 conftest.py 在 app 目录中)并且它导入 module1 (使用 import src.module1
),它找不到 configs/config.json
,但会找到 app/configs/config.json
。我不能使用它,因为它会导致我的应用程序在我 运行 app.py
时崩溃。但是,Pytest 可以从 src 文件夹中找到导入,即使它与 configs 文件夹处于同一级别。
如果我将 conftest.py
移动到 app 目录之外并使用 import app.src.module1
导入 module1,则此导入成功,但在 module1 中导入 module2 则失败。
我该如何解决这个问题?有没有更好的方法来构建我的项目?
通过 运行 pytest 从 app 文件夹而不是基本目录解决了这个问题。