所以我有一个像这样的文件夹结构。
└── myApp
├── app
│ ├── __init__.py
│ ├── core
│ ├── db.py
│ ├── schema.sql
│ ├── static
│ │ ├── fonts
│ │ ├── images
│ │ ├── js
│ │ └── resources
│ ├── templates
│ ├── tests
│ │ └── tests.py
│ ├── utils.py
│ ├── views.py
│ ├── con.py
├── config.py
├── manifest.json
├── run.py
├── deps
├── store
正如您所看到的,我的tests.py位于app / tests文件夹中。
app = Flask(__name__)
在 init .py中声明,但每当我尝试运行我的测试时,我的文件夹(我在myApp目录中这样做:python app / tests / tests.py)我得到了ImportError: No module named app
。
我不确定这些信息是否相关,运行应用程序我通常运行run.py,其中包含app.run(debug = True, host='0.0.0.0')
。
感谢。
tests.py:
import os
import unittest
from app import app
class TestCase(unittest.TestCase):
def setUp(self):
self.db_fd, app.config['DATABASE'] = tempfile.mkstemp()
self.app = app.test_client()
def tearDown(self):
os.unlink(app.config['DATABASE'])
def test_empty_db(self):
rv = self.app.get('/index')
assert b'No entries here so far' in rv.data
if __name__ == "__main__":
unittest.main()
答案 0 :(得分:1)
是否可能是因为tests.py
位于app
内?意思是python找不到app
,因为他没有查看这个目录之上的目录。
import os.path
import sys
newPath = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir))
sys.path.append(newPath)
from app import app
sys.path.remove(newPath)
del newPath
这是一种非常难看的方式来添加python查找导入的路径。这个例子有两个目录,它应该把它带到myApp
目录。
如果出现此问题,您还可以考虑将tests
目录移至myApp
文件夹或其他位置。但我不是python包装/ app礼仪的专家。可能会考虑查找
答案 1 :(得分:0)
您可以通过键入sys.path来查看是否已设置模块的路径。如果没有,你必须设置它,例如在单元测试的文件中使用类似的东西:
import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), 'app'))