2016-04-29 16 views
6

Ho seguente codicedati del modulo mancanti nella richiesta

class MyClass(restful.Resource): 

    def get(self): 
     headers = {'Content-Type': 'text/html'} 
     return make_response(render_template('myfile.html'),200,headers) 

    def post(self): 
      session['CONSUMER_KEY']=request.form.get('consumer_key') 
      session['CONSUMER_SECRET']=request.form.get('consumer_secret') 
      render_template('myfile.html') 

api.add_resource(MyClass,"/mag/",endpoint="mag") 

ho scritto seguente test:

def mytest(self): 
     content_type={"Content-Type": "application/x - www - form - urlencoded","Content-Disposition": "form-data"} 
     response = self.client.post(
      api.url_for(MyClass), data = json.dumps({'consumer_key':'testconsumerkey', 
         'consumer_secret':'testconsumersecret'}), 
      headers=content_type 
     ) 

La questione è di dati forma è vuoto e questo è i valori non sono sempre impostate in sessione. Quando eseguo il debug, vedo che request.data è popolato ma request.form è un dizionario vuoto. Qualcuno può suggerire come posso inviare i dati del modulo in una richiesta di post da un test

MODIFICA: Dettagli ambiente Python 2.7, framework web Flask, self.client is. Sto usando flask.ext.testing

+0

Potrebbe aggiungere som dettagli circa il vostro ambiente? È una fiasca, giusto? Che tipo è 'self.client' nel tuo test? –

+0

Python 2.7, Flask framework web, self.client è Priyam

risposta

4

Lei sembra essere confuso su ciò che il formato previsto per il corpo post dovrebbe essere. Nel caso si tratti di dati JSON (che è quello che si inviano nel caso di test), o dovrebbe essere nel formato application/x-www-form-urlencoded (che è ciò che si pretende di inviare nel caso di test, e ciò che l'endpoint leggerete)?

Se si desidera ricevere dati JSON, sarà necessario modificare l'endpoint per leggere i dati da request.get_json(). Avrete anche bisogno di utilizzare application/json come l'header Content-Type nel caso di test.

Se si desidera ricevere i dati del messaggio urlencoded, è sufficiente semplificare il test eliminando l'intestazione Content-Type e lo json.dumps. Basta passare i dati dettati all'argomento data.

Problemi correlati