2017-04-09 6 views
0

Flaskアプリケーションでunittestを実行していますが、使用されていなくてもviews.pyファイルをインポートしないと404を取得し続けます。私は、ビューのような問題が発生したインポート削除するとFlaskはビューで404を返します

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) 

:私は、このようなtests.pyパッケージを持っています。ビューは、これと同様の方法で編成されています。

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

あなたは 'views'をインポートしていないので、ルートは決して登録されません。 – davidism

+0

私はそれについて書いた。私はこの輸入を呼び出す必要がない方法を探しています。私がそこにリンクした答えを理解する限り、これを行う必要はありません。 – gonczor

+0

実行したいものをインポートする必要があります。その周りに方法はありません。 – davidism

答えて

1

viewsをインポートする必要があります。そうしないと、ルートが登録されません。いいえ、ビューを直接実行していませんが、インポートではすべてのモジュールレベルのコードが実行されます。コードを実行するとrouteが呼び出されます。 routeはビュー機能を登録します。モジュールを使用するには、モジュールをインポートする必要がありません。

関連する問題