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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage