问题描述
我在这个问题上看了几个不同的主题,但是无法弄清楚如何将其应用于我的情况。我的测试文件夹中没有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
导入module1,然后导入模块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
)时,它找不到{ {1}},但将找到configs/config.json
。我无法使用它,因为它会在我运行app/configs/config.json
时导致我的应用程序损坏。但是,Pytest可以从src文件夹中找到导入,即使它与configs文件夹处于同一级别。
如果将app.py
移动到应用程序目录之外,并使用conftest.py
导入module1,则此导入成功,但是module2内的module2导入失败。
解决方法
通过在app文件夹而不是基本目录中运行pytest来解决此问题。