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
我對每個測試創建數據庫記錄
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'
})
User.create基本上呼籲
r.table('user').insert(data).run(g.rdb_conn)
我的測試功能:
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
- 設置運行,但它在先前的請求
- 的端部已經關閉「ReqlDriverError:連接被關閉。」拋出
我怎樣才能防止在每次測試運行的連接重寫eachother?