我在Flask应用程序中运行单元测试,并且即使未使用views.py
文件,我也会继续获取404。我有这样的tests.py
包:
import unittest
from presence_analyzer import main, utils
from presence_analyzer import views
class PresenceAnalyzerViewsTestCase(unittest.TestCase):
def setUp(self):
self.client = main.app.test_client()
def test_mainpage(self):
resp = self.client.get('/')
self.assertEqual(resp.status_code, 302)
当我删除视图导入时,会出现所描述的问题。视图的组织方式与此类似:
from presence_analyzer.main import app
@app.route('/')
def mainpage():
return redirect('/static/presence_weekday.html')
main.py
文件:
import os.path
from flask import Flask
app = Flask(__name__) # pylint: disable=invalid-name
app.config.update(
DEBUG=True,
)
我想这与发生的in this case类似,所以我正在尝试更改应用程序,这样我就不必在测试时进行这种愚蠢的导入。我一直在尝试使用上面的答案,但仍然无法使其工作,而these docs似乎没有帮助。我究竟做错了什么? main.py
:
from flask.blueprints import Blueprint
PROJECT_NAME = 'presence_analyzer'
blue_print = Blueprint(PROJECT_NAME, __name__)
def create_app():
app_to_create = Flask(__name__) # pylint: disable=invalid-name
app_to_create.register_blueprint(blue_print)
return app_to_create
app = create_app()
views.py
:
from presence_analyzer.main import app, blue_print
@blue_print.route('/')
def mainpage():
return redirect('/static/presence_weekday.html')
tests.py
保持不变。
答案 0 :(得分:1)
您必须导入views
,否则路线将不会被注册。不,您没有直接执行视图,但导入执行代码所有模块级代码。执行代码调用route
。 route
注册视图功能。您无法绕过需要导入模块才能使用该模块。