2017-05-17 6 views
0

私は以下のモジュールをdb.db.Dbの下に置いており、Flaskアプリケーションの中にあります。これは、app.config変数を使用してデータベースに接続します。ユニットテストケースを記述するとき、これらの設定をどのように上書きしますか?どのように私はFlaskからダミー設定変数と異なるアプリコンテキストを持っていますか?Flask - 単体テストのテストアプリケーションコンテキスト

import psycopg2 


class Db(object): 
    def __init__(self): 
     import app 
     conn_string = "host='{}' port='{}' dbname='{}' user='{}' password='{}'".format(app.app.config['DB_HOST'], \ 
         app.app.config['DB_PORT'], app.app.config['DB_NAME'], app.app.config['DB_USER'], \ 
         app.app.config['DB_PASSWORD']) 
     self.conn = psycopg2.connect(conn_string) 

    def __del__(self): 
     self.conn.close() 

答えて

0

一般的なパターンではなく、インポート時に作成された単一のアプリケーションインスタンスを有すると、create your app with a functionです。

リクエストコンテキストでデータベースにアクセスする場合は、flask.current_appを使用して現在のアプリコンテキストにアクセスできます。例えば

from flask import current_app 
import psycopg2 


class Db(object): 
    def __init__(self): 
     conn_string = "host='{}' port='{}' dbname='{}' user='{}' password='{}'".format(current_app.config['DB_HOST'], \ 
         current_app.config['DB_PORT'], current_app.config['DB_NAME'], current_app.config['DB_USER'], \ 
         current_app.config['DB_PASSWORD']) 
     self.conn = psycopg2.connect(conn_string) 

    def __del__(self): 
     self.conn.close() 

次に、あなたのテストがそれぞれ独自のアプリを作成し、彼らが好きなように設定値を変更することができます。