1
私はrethinkdbバックエンドを使用している私のフラスコアプリのunittestsを書いています。下記のように、新しい接続が開かれ、各要求の前と後に閉じている:ユニットテストrethinkdbフラスコアプリ、接続オーバーライド
@app.before_request
def before_request():
ARGS = settings.RETHINKDB_ARGS
try:
g.rdb_conn = rethinkdb.connect(host=ARGS['host'],
port=ARGS['port'],
db=ARGS['db'])
except RqlDriverError:
abort(503, "Database connection could be established.")
@app.teardown_request
def teardown_request(exception):
try:
g.rdb_conn.close()
except AttributeError:
pass
私はUser.createは基本的に
r.table('user').insert(data).run(g.rdb_conn)
を呼び出している各テストに
def setUp(self):
self.app = current_app.test_client()
self.user = User.create({
'email': '[email protected]',
'first_name': 'a',
'last_name': 'a',
'role': 'user',
'status': 'active'
})
をデータベースレコードを作成しています
私のテスト機能:
def test_get(self):
url = url_for('api.get_user', **{'id': self.user.data.id})
retval = ujson.loads(self.app.get(url).data)
...
def test_get2(self):
...
テストを実行、これは何が起こるかです:
- セットアップが初めて、g.rdb_conn = 1
- test_get実行を言って実行し、g.rdb_connは、オーバーライドg.rdb_conn = 2とされています要求が終了して終了しました。
- g.rdb_conn = 2のtest_get2で2回目のセットアップが実行されましたが、前の要求の最後に既に閉じています。
- "ReqlDriverError:Connection is closed。スローされた
どのように私は各テストの実行でお互いをオーバーライドするのを防ぐことができますか?