【发布时间】:2020-06-22 16:02:42
【问题描述】:
我正在尝试为我制作的烧瓶应用程序编写一些单元测试。项目设置如下:
apiproject (parent folder containing everything)
/venv
run.py
requirements.txt
/project
__init__.py
/departments
__init__.py
routes.py
models.py
/users
__init__.py
routes.py
models.py
/tests
TestUsers.py
运行.py:
from project import app
if __name__ == '__main__':
app.run(debug=True)
我的实际应用是在 project/init.py
下创建的from flask import Flask, jsonify, Response
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
import os
from dotenv import load_dotenv
from flask_cors import CORS
load_dotenv(verbose=False)
DB_URL = os.getenv("DATABASE_URL")
# initialize the application
app = Flask(__name__)
在我的 TestUsers.py 我有这个:
import json
from project import app
import unittest
from dotenv import load_dotenv
load_env(verbose=False)
class TestUsers(unittest.TestCase):
def setUp(self):
self.app = app
self.url_prefix = prefix = os.getenv("URL_PREFIX")
self.client = self.app.test_client()
def test_index(self):
response = self.client.get(self.url_prefix + '/')
self.assertEqual(response.status_code, 200)
if __name__ == '__main__':
unittest.main()
当我运行 TestUsers.py 时,我得到 ModuleNotFoundError: No module named 'project'。我尝试在 TestUsers.py 中执行 sys.path.append('../') 和 ../../,但这没有帮助。
【问题讨论】:
-
在
/project模块中移动测试。供参考flask.palletsprojects.com/en/1.1.x/tutorial/layout -
那没用 :(
-
对不起,我的意思是将其移出并使用相对路径。我相信这会奏效
-
将文件路径添加到系统路径。您可以在测试文件的顶部执行此操作
标签: python flask python-unittest