2017-12-30 61 views
1

私はFlagsアプリケーションにMongoのデータベースエントリを初期化し、cronジョブをスケジュール設定するセットアップコードを用意しています。サーバーを起動してもテストを実行していないときに、これを一度実行するにはどうすればよいですか?フラスコセットアップコードは一度だけ実行されますが、テスト中は実行されません

私のプロジェクトは、次のように構成されている

:appオブジェクトとセットアップコードがmain.pyにあり、アプリのオブジェクトにアクセスするfrom crypto import mainを実行するために

app = Flask(__name__) 

... 

with app.app_context(): 

    # do database setup 

    # do cron job setup 

マイtest.pyニーズのように見えるが

/crypto 
    __init__.py 
    main.py 
    /templates 
    /statis 
    /tests 
     tests.py 

それをインポートする行為は、私が欲しくないセットアップコードも実行します。私は構造的にこれを解決することができない何かがありますか?


@Hi私はFrogattoよ、私はflask runでローカルにサーバを起動するときしかし、そのコードが実行されません、セットアップコードの周りif __name__ == "__main__":を追加してみました。

答えて

1

importの場合、Pythonインタプリタは.pyファイルを読み込むと、すぐにすべてのコードを実行します。だから、その.pyファイルは、プログラムのメインモジュールであるとき、コードの一部を実行するために、次のifのボディであなたのセットアップコードを配置する必要があります:

if __name__ == "__main__": 
    # setup here. 

このifはあなたのことを保証しますその.pyファイルが実行するメインモジュールであるときにセットアップコードが実行されます。

+0

回答ありがとうございます!私はそれを試みたが、 'フラスコ実行'はそのセクションでコードを実行しない。 – Mike

+0

@Mike問題を解決するには、(1) 'フラスコ実行' CLIを使用しないコードでサーバーを実行してください。 [例](https://github.com/openshift-quickstart/flask-example/blob/master/wsgi/myflaskapp.py)。 (2)common.pyを 'main.py'からインポートすることは避けてください。' main.py'からimportすることをお勧めします。 (3)CLIを使用してサーバーを初期化/設定してみてください。 [例](http://flask.pocoo.org/docs/0.12/tutorial/dbinit/)。 –

関連する問題