Wie kann ich in einem Flask-Unit-Test Objekte auf dem request-global `g`-Objekt verspotten?
Ich habe eine Kolbenanwendung, die eine Datenbankverbindung in a herstelltbefore_filter
, Sehr ähnlich zudiese:
@app.before_request
def before_request():
g.db = connect_db()
Jetzt schreibe ich einige Unit-Tests und das tue ich auchnicht wollen, dass sie die Datenbank treffen. Ich möchte ersetzeng.db
mit einem Scheinobjekt, an das ich Erwartungen stellen kann.
Meine Tests verwendenapp.test_client()
, wie in der Dokumentation des Kolbens gezeigtHier. Ein Beispieltest sieht ungefähr so aus
def test(self):
response = app.test_client().post('/endpoint', data={..})
self.assertEqual(response.status_code, 200)
...
Die Tests funktionieren und bestehen, aber sie treffen auf die Datenbank und wie gesagt, ich möchte den Datenbankzugriff durch Scheinobjekte ersetzen. Ich sehe keinen Weg hineintest_client
Zugang zumg
Objekt oder ändern Sie die before_filters.