首页 > 解决方案 > 如何将应用程序文件导入不同目录Python中的测试文件

问题描述

如果我要解决这个问题,我深表歉意,但我对 python 还是很陌生,无法弄清楚问题出在哪里!我有一个简单的 Flask 应用程序,我正在尝试使用 pytest 编写测试。文件结构是这样的:

│── app.py
|── tests
│   ├── tests_app.py

我最初将 app.py 和 tests_app.py 放在同一级别,并且在测试通过时一切正常,但现在我已将测试放在他们自己的文件夹中,我无法再无错误地导入应用程序。

我在 tests_app.py 中尝试了以下内容:

from app import app #this is what worked fine when app and tests were in the same folder
from ..app import app
from .. import app

并且 linting 错误是“尝试在顶级包之外进行相对导入”,当我运行 pytest 时,它显示“ImportError:尝试在没有已知父包的情况下进行相对导入”。

提前谢谢了!

ps 我正在使用 Python 3.8.5

标签: pythonpython-3.xflaskpytest

解决方案


你需要app模块搜索路径上有。一个快速的解决方法是将路径添加app.pyPYTHONPATH环境变量:

export PYTHONPATH=/path/to/dir  # where app.py is

如果app.py在 python 路径上,那么import app将起作用(除非有任何其他导入问题,例如循环导入)。

一种有效且可重现的方法是安装您的应用程序。您可以在develop模式下执行此操作,这意味着代码从其当前目录运行。这是开发 Python 应用程序的一个低调而重要的部分,但要做到这一点,您需要编写代码来打包您的应用程序


推荐阅读