2012-01-30 5 views
13

테스트 플라스크 응용 프로그램이 이루어집니다 : 여기 그런Flask 테스트 클라이언트로 AJAX 요청을 시뮬레이트하려면 어떻게해야합니까?

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

것은 내 테스트 스크립트입니다

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

테스트 출력에서, 나는거야 :

Hello world! AJAX Request: False 

질문

AJAX 요청으로 앱을 테스트하려면 어떻게해야합니까?

답변

20

이 시도 : -

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

우수! :) 그냥'.get()'함수에 설정할 수있는 매개 변수를 찾고있었습니다. 나는 이미'werkzeug' 문서를 깊이 파고 들었습니다. S 어느 문서 부분을 가져 왔습니까? – 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 

`

관련 문제