Pytest找不到文件/模块

问题描述

在这个问题上看了几个不同的主题,但是无法弄清楚如何将其应用于我的情况。我的测试文件夹中没有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来解决此问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...