2012-01-30 5 views
13

applicazioni di test pallone viene fatto con:Come simulare una richiesta AJAX con il client di prova 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() 

Allora ecco la mia script di test:

# 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() 

In uscita di test, vado a prendere:

Hello world! AJAX Request: False 

Domanda

Come posso testare la mia app con richieste AJAX?

risposta

20

Prova questo: -

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

Eccellente! :) Stavo solo cercando i parametri che posso impostare per la funzione '.get()'. Stavo già scavando in profondità nei documenti di 'werkzeug': S Quale parte dei documenti hai ottenuto? – 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 

`

Problemi correlati