2016-04-18 18 views
0

Hier ist ein minimalistisches Beispiel, wie ich Web-API testen werde. Anscheinend bekomme ich 500 statt der erwarteten Behauptung. Was mache ich falsch?Flask - wie man POST richtig prüft?

import unittest 

from flask import Flask, request 

from app.forms import RegistrationForm 

app = Flask(__name__) 

@app.route('/', methods=['GET', 'POST']) 
def hello_world(): 
    form = RegistrationForm(request.form) 
    return form.foo.data+form.bar.data 


class AppTestCase(unittest.TestCase): 
    def setUp(self): 
     self.app = app.test_client() 

    def tearDown(self): 
     pass 

    def test_login_logout(self): 
     rv=self.app.post('/', data=dict(
      foo='foooo', 
      bar='barrr' 
     ), follow_redirects=True) 
     assert 'foooobarrr' in rv.data 

if __name__ == '__main__': 
    app.run() 
+0

versuchen Sie, 'Assert' foooobarr 'in rv.data' zu entfernen. dann drucke 'rv.data' und schau, was du bekommst. ist der String 'foooobarr' wirklich in' rv.data'? als eine Seitennotiz sollte 'request.form' wahrscheinlich nicht innerhalb von 'RegistrationForm()' sein. – wgwz

+0

Aktivieren Sie den Debug-Modus oder die Protokollierung und schauen Sie sich das Traceback an. http://stackoverflow.com/questions/32722143/flask-application-traceback-doesnt-show-up-in-server-log Bitte [bearbeiten], um eine [mcve] zu erstellen. – davidism

+0

Ja, es tut 500 im Moment. Aber dieser Code soll nur die Idee von dem, was ich will, veranschaulichen. – Castle

Antwort

0

Assertion löst eine Ausnahme aus. Ausnahmedetails werden niemals an den Client gesendet. Der Browser erhält nur HTTP 500, was bedeutet, dass etwas mit dem Server nicht stimmt. Eine unbehandelte Ausnahme ist genau das - etwas stimmt nicht mit dem Server.

Um die Ausnahme zu sehen, aktivieren Sie den Debug-Modus in Kolben.

app.run(debug=True) 
+0

Ja, es tut 500, aber meine Frage ist nicht darüber. Dieser Code soll nur die Idee von dem, was ich will, veranschaulichen. Können Sie ein funktionierendes Beispiel geben? – Castle

+0

@Castle Dann verstehe ich nicht wirklich, was Sie fragen. Können Sie Ihre Hauptfrage in einem Satz zusammenfassen? – zvone