如何用Flask测试客户端模拟AJAX请求?

如何用Flask测试客户端模拟AJAX请求?

问题描述:

测试瓶的应用与实现:如何用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请求测试我的应用程序?

试试这个: -

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 2012-01-30 15:03:07

+1

http://flask.pocoo.org/docs/api/&http://flask.pocoo.org/mailinglist/archive/2011/6/29/werkzeug-client-headers/#d9ba40af5d07413dd75f95f92f515eec – sojin 2012-01-30 23:55:28

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 

`