Flask在视图

时间:2017-04-09 14:23:18

标签: python flask python-unittest

我在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保持不变。

1 个答案:

答案 0 :(得分:1)

您必须导入views,否则路线将不会被注册。不,您没有直接执行视图,但导入执行代码所有模块级代码。执行代码调用routeroute注册视图功能。您无法绕过需要导入模块才能使用该模块。