Testen einer Flask RESTful-API

11

Angenommen, ich möchte die folgende Flask-API testen (aus Ссылка ):

%Vor%

Nachdem ich dies als flaskapi.py gespeichert und ausgeführt habe, führe ich im selben Verzeichnis das Skript test_flaskapi.py :

aus %Vor%

Beide Tests bestehen, aber für den zweiten Test (definiert in der Klasse TestFlaskApi ) habe ich noch nicht herausgefunden, wie man behauptet, dass die JSON-Antwort wie erwartet ist (nämlich {'hello': 'world'} ). Dies liegt daran, dass es sich um eine Instanz von flask.wrappers.Response handelt (was wahrscheinlich im Wesentlichen ein Werkzeug Response-Objekt ist (vgl. Ссылка )), und ich konnte kein Äquivalent der json() Methode für requests 'finden Antwort Objekt.

Wie kann ich Aussagen zum JSON-Inhalt des zweiten response machen?

    
Kurt Peek 18.01.2017, 11:34
quelle

4 Antworten

10

Ich habe festgestellt, dass ich die JSON-Daten erhalten kann, indem ich json.loads() auf die Ausgabe der Methode get_data() anwende:

%Vor%

Beide Tests gehen wie gewünscht:

%Vor%     
Kurt Peek 18.01.2017, 11:45
quelle
11

Flask bietet einen test_client, den Sie in Ihren Tests verwenden können:

%Vor%

Flask Testing Docs

    
TheGrimmScientist 13.08.2017 23:03
quelle
9

Was Sie dort machen, ist kein Unit-Test. In jedem Fall, wenn Sie die Anfragen-Bibliothek oder den Kolben-Client verwenden, führen Sie Integrationstests durch Machen Sie tatsächliche HTTP-Aufrufe an die Endpunkte und testen Sie die Interaktion.

Entweder der Titel der Frage oder der Ansatz ist nicht korrekt.

    
Luisa Emme 22.09.2017 17:13
quelle
2

Mit Python3 habe ich den Fehler TypeError: the JSON object must be str, not bytes bekommen. Es ist erforderlich, zu dekodieren:

%Vor%

Diese Frage gibt eine Erklärung.

    
pylipp 03.07.2017 08:56
quelle