Ich führe Unittests in einer Flask App und ich bekomme 404, wenn views.py
Datei nicht importiert wird, obwohl es nicht verwendet wird. Ich habe so tests.py
Paket:Flask gibt 404 in Ansichten zurück
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)
Wenn ich löschen Ansichten importieren das beschriebene Problem auftritt. Ansichten werden in ähnlicher Weise dazu organisiert:
from presence_analyzer.main import app
@app.route('/')
def mainpage():
return redirect('/static/presence_weekday.html')
Und die main.py
Datei:
import os.path
from flask import Flask
app = Flask(__name__) # pylint: disable=invalid-name
app.config.update(
DEBUG=True,
)
Ich denke, es ist etwas, ähnlich dem, was passiert ist in this case, so versuche ich, um die Anwendung zu ändern, so dass Ich muss diese dummen Importe beim Testen nicht machen. Ich habe versucht, die Antwort von oben zu verwenden, aber immer noch kann es nicht funktionieren und these docs scheinen nicht hilfreich. Was mache ich falsch? 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')
Und tests.py
ist unverändert geblieben.
Sie importieren keine 'Ansichten', daher wird die Route nie registriert. – davidism
Ich habe darüber geschrieben. Ich suche nach einer Möglichkeit, diesen Import nicht mehr aufrufen zu müssen. Soweit ich die Antwort verstehe, die ich dort verlinkt habe, gibt es eine Möglichkeit, dies nicht tun zu müssen. – gonczor
Sie müssen Dinge importieren, die Sie ausführen möchten. Es gibt keinen Weg dahin. – davidism