2012-01-30 10 views
13

aplicaciones de pruebas matraz se realizan con:¿Cómo simulo una solicitud de AJAX con el cliente de prueba de Flask?

# main.py 
from flask import Flask, request 

app = flask.Flask(__name__) 

@app.route('/') 
def index(): 
    s = 'Hello world!', 'AJAX Request: {0}'.format(request.is_xhr) 
    print s 
    return s 

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

Entonces aquí está mi script de prueba:

# test_script.py 
import main 
import unittest 

class Case(unittest.TestCase): 
    def test_index(): 
     tester = app.test_client() 
     rv = tester.get('/') 
     assert 'Hello world!' in rv.data 

if __name__ == '__main__': 
    unittest.main() 

En la salida de prueba, voy a conseguir:

Hello world! AJAX Request: False 

Pregunta

¿Cómo pruebo mi aplicación con las solicitudes de AJAX?

Respuesta

20

Prueba esto: -

def test_index(): 
    tester = app.test_client() 
    response = tester.get('/', headers=[('X-Requested-With', 'XMLHttpRequest')]) 
    assert 'Hello world!' in response.data 
+0

Excelente! :) Estaba buscando los parámetros que puedo configurar para la función '.get()'. Ya estaba profundizando en los documentos 'werkzeug': S ¿Qué parte de los documentos obtuviste esto? – Kit

+1

http://flask.pocoo.org/docs/api/ & http://flask.pocoo.org/mailinglist/archive/2011/6/29/werkzeug-client-headers/#d9ba40af5d07413dd75f95f92f515eec – sojin

1
import json 

def test_index(): 
    data = json.dumps({}) 
    client = app.test_client() 
    headers = { 
     'Content-Type': 'application/json', 
    } 
    response = client.post('/', data=data, headers=headers) 
    data = json.loads(response.data) 
    assert data 

`

Cuestiones relacionadas